Вверх ↑
Разработчик
Ответов: 26068
Рейтинг: 2121
#1: 2017-04-24 23:12:10 ЛС | профиль | цитата
Dimka писал(а):
а можно узнать хэндл по ИД процесса после запуска программы с помощью WinExec ?

Напрямую -- нет, нельзя, только перебором всех хандлов, получением их ID и сравнением с нужным тебе.

--- Добавлено в 2017-04-24 23:45:07

Да, учти еще и то, что у процесса может быть несколько окон

--- Добавлено в 2017-04-24 23:51:22

Вот реализация того, о чем я говорил

Схема

Add(MainForm,3426258,378,301)
{
Width=500
Height=600
Point(Handle)
}
Add(WinExec,7740231,245,154)
{
FileName="notepad.exe"
Point(ProcessID)
}
Add(Button,5465219,70,154)
{
Width=220
Height=40
Font=[MS Sans Serif,12,1,0,1]
Caption="ЗАПУСТИТЬ БЛОКНОТ"
link(onClick,7740231:doExec,[])
}
Add(Button,5364659,70,231)
{
Top=50
Width=220
Height=40
Font=[MS Sans Serif,12,1,0,1]
Caption="ПОИСК ОКНА"
link(onClick,12421002:doEnum,[])
}
Add(SetParent,2960829,357,399)
{
Point(ParentHandle)
link(onSetParent,3909455:doEvent1,[])
link(Handle,11255131:Var2,[])
link(NewParent,3426258:Handle,[(370,345)(384,345)])
}
Add(Button,13227139,287,399)
{
Top=100
Width=220
Height=40
Font=[MS Sans Serif,12,1,0,1]
Caption="ЗАХВАТ ОКНА"
link(onClick,2960829:doSetParent,[])
}
Add(Memory,1896593,357,238)
{
Point(Data)
link(onData,1576976:doStrCat,[])
link(Data,1671510:Var3,[(363,206)])
}
Add(PosWindow,12362078,455,399)
{
link(Handle,8785889:Var2,[])
}
Add(Hub,3909455,413,399)
{
OutCount=4
link(onEvent1,12362078:doLeft,[])
link(onEvent2,12362078:doTop,[])
link(onEvent3,11821619:doWidth,[])
link(onEvent4,11821619:doHeight,[])
}
Add(SizeWindow,11821619,518,413)
{
Width=400
Height=500
link(Handle,8785889:Var3,[(524,369)])
}
Add(GetDataEx,11255131,357,364)
{
link(Data,1896593:Value,[])
}
Add(GetDataEx,8785889,455,364)
{
Angle=3
link(Data,11255131:Var3,[])
}
Add(Button,5216612,287,455)
{
Top=150
Width=340
Height=40
Font=[MS Sans Serif,12,1,0,1]
Caption="КАК ВЫГРУЗИТЬ ОКНО ОБРАТНО ??"
link(onClick,3540648:doSetParent,[])
}
Add(SetParent,3540648,350,455)
{
Point(ParentHandle)
link(Handle,11255131:Var1,[(356,446)(279,446)(279,369)])
link(NewParent,2960829:OldParent,[])
}
Add(WinEnum,12421002,133,231)
{
link(onFindWindow,15842682:doWinInfo,[])
}
Add(WinInfo,15842682,189,231)
{
Point(ProcessID)
link(onWinInfo,6836922:doCompare,[])
link(Handle,1671510:Var2,[])
}
Add(If_else,6836922,245,231)
{
link(onTrue,12229469:doEvent1,[])
link(Op1,7740231:ProcessID,[])
link(Op2,15842682:ProcessID,[(258,222)(286,222)(286,271)(209,271)])
}
Add(Label,13399268,469,238)
{
Left=240
Top=90
Width=200
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="ИД ОКНА"
AutoSize=1
}
Add(StrCat,1576976,413,238)
{
Str1="ИД ОКНА - "
link(onStrCat,13399268:doText,[])
}
Add(GetDataEx,1671510,189,201)
{
Angle=3
link(Data,12421002:Handle,[(181,206)(181,278)(139,278)])
}
Add(Hub,12229469,301,231)
{
link(onEvent1,12421002:doStop,[(326,237)(326,286)(123,286)(123,251)])
link(onEvent2,1896593:doValue,[])
}

карма: 22

0
Редактировалось 4 раз(а), последний 2017-04-24 23:52:15