shyra1976
26-05-2009, 16:46
как узнать pid активного окна ???
Может быть хендл (hWnd)? Или ID (PID) процесса, связанного с активным окном?
1.
WinGetHandle('[ACTIVE]')
2.
WinGetProcess('[ACTIVE]')
shyra1976
27-05-2009, 09:04
У меня класс окно : Afx:00400000:8:00010011:00000006:01590C87
а класс другого окна: Afx:00400000:8:00010011:00000006:073E0BA9
и таких окон много Только процесс одинаков Вот Я думал по процессу делать проверку
А посмотри на программку Au3Info.exe лежит там же где и AutoIT там можно получить что тор типа этого
>>>> Window <<<<
Title:
Class: Shell_TrayWnd
Position: 0, 566
Size: 1024, 34
Style: 0x96000000
ExStyle: 0x00000088
Handle: 0x0003004E
>>>> Control <<<<
Class: ToolbarWindow32
Instance: 2
ClassnameNN: ToolbarWindow322
Advanced (Class): [CLASS:ToolbarWindow32; INSTANCE:2]
ID:
Text: Выполнение приложений
Position: 263, 0
Size: 526, 30
ControlClick Coords: 469, 22
Style: 0x52009345
ExStyle: 0x00000000
Handle: 0x00010084
>>>> Mouse <<<<
Position: 732, 592
Cursor ID: 2
Color: 0x55A0FF
>>>> StatusBar <<<<
>>>> Visible Text <<<<
пуск
21:01
Область уведомлений
TF_FloatingLangBar_WndTitle
Выполнение приложений
Выполнение приложений
Quick Launch
>>>> Hidden Text <<<<
если уже знаешь извиняй, я предложил. Может еще смысл программы расскажешь чуть?
shyra1976
30-06-2009, 09:50
у нас на работе установили программу для ввода данных
Но она понимает только большые буквы
Вот я и хотел написать программу в что бы каждый раз что я обращаюсь к окну для заполнения данных у меня включался Caps lock
Проблема в том что в программе для ввода данных можно открыть много окон как в OUTLOOK
и в каждом окне можно писать данные
Пока смог написать только что бы Caps lock сробатовал в первом окне В остальных не работает Caps lock
shyra1976, пример:
Opt('TrayIconDebug', 1)
HotKeySet('{ESC}', '_Pro_Exit'); Клавиша ESC - закрыть скрипт
Global $sTitel, $hWnd, $iPID, $sFile
While 1
$hWnd = WinGetHandle('[Active]')
$sTitel = WinGetTitle($hWnd)
$iPID = WinGetProcess($hWnd)
$sFile = _ProcessGetLocation($iPID)
ToolTip('Указатель окна:' & @TAB & $hWnd & @CRLF & _
'Заголовок окна:' & @TAB & $sTitel & @CRLF & _
'PID процесса:' & @TAB & @TAB & $iPID & @CRLF & _
'Файл процесса:' & @TAB & @TAB & $sFile, _
10, 100, 'Активное окно')
Sleep(100)
WEnd
Func _ProcessGetLocation($iPID)
Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
If $aProc[0] = 0 Then Return SetError(1, 0, '')
Local $vStruct = DllStructCreate('int[1024]')
DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
Return $aReturn[3]
EndFunc
Func _Pro_Exit()
Exit
EndFunc
у нас на работе установили программу для ввода данных
Но она понимает только большые буквы
Вот я и хотел написать программу в что бы каждый раз что я обращаюсь к окну для заполнения данных у меня включался Caps lock
Проблема в том что в программе для ввода данных можно открыть много окон как в OUTLOOK
и в каждом окне можно писать данные
Пока смог написать только что бы Caps lock сробатовал в первом окне В остальных не работает Caps lock »
могу подкинуть десяток запятых :yahoo: - даром ))))))))
Belfigor
30-06-2009, 11:22
Я для определения Pid уже известного мне процесса использую это:
$title = 'MMO A1'
$exe = 'game.exe'
Func Pid()
Global $pid = ProcessExists($title)
If ($pid == 0) Then
$pid = ProcessExists($exe)
EndIf
If ($pid == 0) Then
SetError(1)
Else
SetError(0)
EndIf
EndFunc
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.