Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2015, 08:54   #31
j0hnlem0n
Пользователь
 
Регистрация: 17.09.2015
Сообщений: 21
По умолчанию

Цитата:
Здрасссьте приехали...
Там вообще-то и получение.
Точно есть получение, сразу не понял, слушай дак у тебя только keyup и keydown используются а почему kepress закомменчен?
j0hnlem0n вне форума Ответить с цитированием
Старый 29.09.2015, 09:03   #32
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а почему kepress закомменчен?
"А скрипач не нужен, дарагой". Тем паче что мне и зажатия клавиши нужно отправлять тоже.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2015, 09:30   #33
j0hnlem0n
Пользователь
 
Регистрация: 17.09.2015
Сообщений: 21
По умолчанию

Просто мне не понятно, в роде сделал все как у тебя
передача:
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  btnShiftState:string;
begin
  //if ssShift in Shift then btnShiftState :='1' else btnShiftState:='0';
  tcpClient.Socket.WriteLn(keyBoardDown+'1000000001,'+IntToStr(Key));
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  btnShiftState:string;
begin
  //if ssShift in Shift then btnShiftState :='1' else btnShiftState:='0';
  tcpClient.Socket.WriteLn(keyBoardUp+'1000000001,'+IntToStr(Key));
end;
получение:
Код:
if (commandServer='108') then begin
  i:=Length(fullReadString);
  btnKey := copy(fullReadString, 4, i-3);
  btnKeyWord:= StrToInt(btnKey);
  kCode[1]:=btnKeyWord;
  kCode[2]:=MapVirtualKeyEx(btnKeyWord,0,GetKeyboardLayout(0));
  keybd_event(kCode[1],kCode[2],KEYEVENTF_EXTENDEDKEY or 0,0);
end;
if (commandServer='109') then begin
  i:=Length(fullReadString);
  btnKey := copy(fullReadString, 4, i-3);
  //keybd_event(ORD(StrToInt(btnKey)), 0, KEYEVENTF_KEYUP,0);
  btnKeyWord:= StrToInt(btnKey);
  kCode[1]:=btnKeyWord;
  kCode[2]:=MapVirtualKeyEx(btnKeyWord,0,GetKeyboardLayout(0));
  keybd_event(kCode[1],kCode[2],KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
Но проблема есть в том что шифт не отжимается, или отжимается коряво в чем может быть проблема ?
j0hnlem0n вне форума Ответить с цитированием
Старый 29.09.2015, 09:50   #34
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в роде сделал все как у тебя
Нет не как у меня )
Я передаю клавишу (код) и ее состояние (нажата\отжата)
Код:
SendKey(Key,KEYEVENTF_KEYUP);
И принимаю:
Код:
procedure TForm1.Keyboard(AData: TIdBytes);
var key,State:Word;kCode:array[1..2] of byte;
begin
  with ReadStream(AData) do begin
    Position:=1;
    Key:=ReadWord;
    State:=ReadWord;
    free;
  end;
  kCode[1]:=key;
  kCode[2]:=MapVirtualKeyEx(Key,0,GetKeyboardLayout(0));
  keybd_event(kCode[1],kCode[2],KEYEVENTF_EXTENDEDKEY or State,0);
end;
Давно я его писал... Тут я шифты не передаю. Почему? Не помню
просто не понадобилось, работа и так работала как полагается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2015, 10:01   #35
j0hnlem0n
Пользователь
 
Регистрация: 17.09.2015
Сообщений: 21
По умолчанию

Код:
SendKey(Key,KEYEVENTF_KEYUP);
передается при событии onkeyup
У меня при при событии onkeyup передается номер '109'
В данном случае и потом я просто при принятии делаю как у тебя:
Код:
if (commandServer='109') then begin
  i:=Length(fullReadString);
  btnKey := copy(fullReadString, 4, i-3);
  //keybd_event(ORD(StrToInt(btnKey)), 0, KEYEVENTF_KEYUP,0);
  btnKeyWord:= StrToInt(btnKey);
  kCode[1]:=btnKeyWord;
  kCode[2]:=MapVirtualKeyEx(btnKeyWord,0,GetKeyboardLayout(0));
  keybd_event(kCode[1],kCode[2],KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
а при onkeydown
Код:
if (commandServer='108')
и там передаю в функцию не KEYEVENTF_KEYUP а 0 все так же в роде бы ) ?

Цитата:
Не помню
просто не понадобилось, работа и так работала как полагается.
Просто у меня после нажатия шифта уже нельзя работать как пологается )

Последний раз редактировалось Stilet; 29.09.2015 в 10:23.
j0hnlem0n вне форума Ответить с цитированием
Старый 29.09.2015, 10:25   #36
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
btnKey := copy(fullReadString, 4, i-3);
Обрати внимание: Я не передаю строки. Я передаю поток байт как есть.
Может у тебя не все красиво на самом деле в самой строке, что передается.
И почему именно строки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2015, 10:32   #37
j0hnlem0n
Пользователь
 
Регистрация: 17.09.2015
Сообщений: 21
По умолчанию

Цитата:
И почему именно строки?
Да это по глупости, до твоего примера не знал как правильно передать )... буквы то нормально передаются вот шифт.... он тоже в роде передается то есть я пишу строчные, потом нажимаю шифт у меня пишутся заглавные, но потом как бы я не нажимал шифт заглавными так и пишет... помогает капс ).. альт+шифт в роде тоже передается... вообще не могу понять что может быть и еще файлы выделяться все начинают ( как с шифтом. Белеберда начинается какая то в общем.
Я просто еще немного не понимаю этого
Код:
KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP
Может сделать просто KEYEVENTF_KEYUP ??

странно коненчно но добавил sleep(50) перед
Код:
keybd_event(kCode[1],kCode[2],KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
В роде заработало, только проблема появилась с выделением файлов мышкой с зажатым шифтом )

Последний раз редактировалось Stilet; 29.09.2015 в 11:35.
j0hnlem0n вне форума Ответить с цитированием
Старый 29.09.2015, 11:36   #38
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но потом как бы я не нажимал шифт заглавными так и пишет
Значит отжатие шифта не передаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2015, 12:36   #39
j0hnlem0n
Пользователь
 
Регистрация: 17.09.2015
Сообщений: 21
По умолчанию

Разобрался в роде, спасибо всем ! Так и не понял в чем косяк был но твой код да рабочий )
j0hnlem0n вне форума Ответить с цитированием
Старый 01.10.2015, 13:16   #40
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но твой код да рабочий
Естесственно )))
Я его иногда использую дома.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление удаленным рабочим столом ikot Работа с сетью в Delphi 44 09.06.2015 23:20
Проблема с рабочим столом pionerka Windows 3 22.05.2013 23:18
Проблема с рабочим столом barsiva Компьютерное железо 5 06.10.2011 12:48
Проблемы с рабочим столом Максим_Кем Операционные системы общие вопросы 4 16.01.2011 15:22
Проблема с рабочим столом. VintProg Свободное общение 5 21.08.2010 14:36