Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] как узнать pid активного окна ???

Ответить
Настройки темы
[решено] как узнать pid активного окна ???

Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:46, 26-05-2009

 

Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 87

Профиль | Отправить PM | Цитировать


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

1.
Код: Выделить весь код
WinGetHandle('[ACTIVE]')
2.
Код: Выделить весь код
WinGetProcess('[ACTIVE]')

Отправлено: 17:28, 26-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:04, 27-05-2009 | #3


Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 10:19, 11-06-2009 | #4


Аватара для Medic84

$AutoITer


Автор проектов


Сообщения: 446
Благодарности: 44

Профиль | Отправить PM | Цитировать


А посмотри на программку 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 <<<<
если уже знаешь извиняй, я предложил. Может еще смысл программы расскажешь чуть?

-------

AutoIT Русское сообщество| Моя лаборатория


Последний раз редактировалось Medic84, 11-06-2009 в 20:13.


Отправлено: 20:02, 11-06-2009 | #5


Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 09:50, 30-06-2009 | #6


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


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 »
могу подкинуть десяток запятых - даром ))))))))

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:16, 30-06-2009 | #7


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:22, 30-06-2009 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] как узнать pid активного окна ???

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Ограничение активного сеанса для пользователей терминалов __sa__nya Microsoft Windows NT/2000/2003 2 30-06-2009 15:37
Разное - [решено] Что такое PID процесса ? S-400 Microsoft Windows 2000/XP 3 09-05-2009 14:48
[решено] Сервер терминалов, время не активного сеанса до блокировки экрана bool Microsoft Windows NT/2000/2003 3 25-04-2009 21:03
Интернет - [решено] Отключение ограничения отображения активного содержимого Klotik Microsoft Windows 2000/XP 2 23-07-2008 16:38




 
Переход