Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.09.19;
Скачать: [xml.tar.bz2];

Вниз

Отослать сообщение окну...   Найти похожие ветки 

 
SIV500   (2010-06-22 18:03) [0]

Народ привет. Подскажите пожалуйста как отослать сообщения окну другой програмы, после того как я поменял родителя етого окна на свою форму.
Вот так вот меняю родителя:

///
var
wHandle : THandle;
begin
wHandle := FindWindow("OpWindow" ,nil);
Windows.SetParent(wHandle,self.Handle);

////

Не меняя родителя отсылал сообщение так: PostMessage(CurrentHandle, WM_KEYDOWN, VK_RIGHT, 0); Все работало.

/// CurrentHandle - заранее нахожу окно


 
Вотведь   (2010-06-22 18:31) [1]

PostMessage(wHandle, WM_KEYDOWN, VK_RIGHT, 0); ?


 
SIV5000   (2010-06-22 20:10) [2]

Пробовал так, но не работает. (не находит окна)


 
Юрий Зотов ©   (2010-06-22 21:12) [3]

Похоже, что при переназначении родителя изменился стиль окна, поэтому оно было пересоздано и получило новый хэндл. Соответственно, по старому оно уже не находится и надо искать снова (FindWindowEx)


 
Leonid Troyanovsky ©   (2010-06-23 08:39) [4]


> SIV500   (22.06.10 18:03)  

> Народ привет. Подскажите пожалуйста как отослать сообщения
> окну другой програмы, после того как я поменял родителя
..
> Windows.SetParent(wHandle,self.Handle);

Не надо так делать.

--
Regards, LVT.


 
SIV5000   (2010-06-23 08:40) [5]


> Не надо так делать.

Почему?


 
Вотведь   (2010-06-23 08:47) [6]

>>SIV5000   (23.06.10 08:40) [5]
>>Почему?


По качану.

В справке написано "The new parent window and the child window must belong to the same application" не для тебя?

Или ты, типа, кулхацкер?


 
Leonid Troyanovsky ©   (2010-06-23 08:50) [7]


> SIV5000   (23.06.10 08:40) [5]

Потому, что чужое окно, по всей видимости, не child,
и не получит то, что может быть ему необходимо.
См. также http://support.microsoft.com/kb/89563

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2010-06-23 09:00) [8]


> Вотведь   (23.06.10 08:47) [6]

> window must belong to the same application" не для тебя?

Уже давно, IMHO, не написано.
Но, все равно, глюков будет немало.

--
Regards, LVT.


 
Игорь Шевченко ©   (2010-06-23 18:34) [9]

http://www.transl-gunsmoker.ru/2010/06/postmessage.html


 
Leonid Troyanovsky ©   (2010-06-23 18:41) [10]


> Игорь Шевченко ©   (23.06.10 18:34) [9]

Кста:

> Во-вторых, даже если вам удастся отправить нужные сообщения
> ввода в очередь ввода целевого окна, это не установит/обновит
> модификаторы клавиатуры (shift states). Когда обработчик
> клавиатурного сообщения в этом окне вызовет функцию GetKeyState
> или GetAsyncKeyState, то он увидит "настоящее" состояние
> дел, а не фальшивое, которое вы хотели ему подсунуть, отправляя
> сообщения.

можно путем AttachThreadInput установить требуемое состояние,
но, успеха оно, все равно, не принесет.

Foreground or not foreground потоки обрабатывают очереди
ввода по-разному.

--
Regards, LVT.


 
Игорь Шевченко ©   (2010-06-23 18:45) [11]


> Foreground or not foreground потоки обрабатывают очереди
>
> ввода по-разному.


Поделись источником знаний


 
Leonid Troyanovsky ©   (2010-06-23 19:14) [12]


> Игорь Шевченко ©   (23.06.10 18:45) [11]

> Поделись источником знаний

Жизненная опытность ;)
Путем личных наблюдений.

--
Regards, LVT.


 
В школу!   (2010-06-23 21:46) [13]


> Жизненная опытность ;)
> Путем личных наблюдений.


"Только мы заявляем прямо - это полная ерунда".

Для каждого потока существует виртуализированная очередь ввода, про которую недвусмысленно и без обиняков пишет Рихтер, Великий и Ужасный.
Если бы background и foreground потоки обрабатывали бы сообщения от RIT по-разному, эта концепция не стоила бы выеденного гроша.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.09.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1277414148
AKE
2010-06-25 01:15
2010.09.19
Помогите найти ошибку плиз...


2-1277122422
nobody
2010-06-21 16:13
2010.09.19
Выполнение запросов в потоке, с использованием DOA


2-1276167910
dimds
2010-06-10 15:05
2010.09.19
Подключение к серверу из среды Delphi


2-1277558905
HF-Trade
2010-06-26 17:28
2010.09.19
Блокировать доступ к памяти процесса


15-1276586599
brother
2010-06-15 11:23
2010.09.19
Электронные сигареты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский