Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] как узнать pid активного окна ??? (http://forum.oszone.net/showthread.php?t=141106)

shyra1976 26-05-2009 16:46 1128024

как узнать pid активного окна ???
 
как узнать pid активного окна ???

Yashied 26-05-2009 17:28 1128040

Может быть хендл (hWnd)? Или ID (PID) процесса, связанного с активным окном?

1.
Код:

WinGetHandle('[ACTIVE]')
2.
Код:

WinGetProcess('[ACTIVE]')

shyra1976 27-05-2009 09:04 1128495

У меня класс окно : Afx:00400000:8:00010011:00000006:01590C87
а класс другого окна: Afx:00400000:8:00010011:00000006:073E0BA9
и таких окон много Только процесс одинаков Вот Я думал по процессу делать проверку

shyra1976 11-06-2009 10:19 1140790

есть у кого мысли ?

Medic84 11-06-2009 20:02 1141205

А посмотри на программку 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 1155255

у нас на работе установили программу для ввода данных
Но она понимает только большые буквы
Вот я и хотел написать программу в что бы каждый раз что я обращаюсь к окну для заполнения данных у меня включался Caps lock

Проблема в том что в программе для ввода данных можно открыть много окон как в OUTLOOK
и в каждом окне можно писать данные
Пока смог написать только что бы Caps lock сробатовал в первом окне В остальных не работает Caps lock

proxy 30-06-2009 10:16 1155270

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




Цитата:

Цитата shyra1976
у нас на работе установили программу для ввода данных
Но она понимает только большые буквы
Вот я и хотел написать программу в что бы каждый раз что я обращаюсь к окну для заполнения данных у меня включался Caps lock
Проблема в том что в программе для ввода данных можно открыть много окон как в OUTLOOK
и в каждом окне можно писать данные
Пока смог написать только что бы Caps lock сробатовал в первом окне В остальных не работает Caps lock »

могу подкинуть десяток запятых :yahoo: - даром ))))))))

Belfigor 30-06-2009 11:22 1155309

Я для определения 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



Время: 22:18.

Время: 22:18.
© OSzone.net 2001-