Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Окно "Запуск программы"

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Окно "Запуск программы"
Имя
Сообщение << Старые топики   Новые топики >>
Окно "Запуск программы" - 2007-01-26 22:17:14.350000   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
   Мне нужно из ComboBox-а в окне "Запуск программы" (Win+R) считать текст, и если текст = "net send" тогда вырезать из окна этот текст. Язык - Дельфи. Окно имеет фокус ввода.
Post #: 1
RE: Окно "Запуск программы" - 2007-01-27 00:31:17.796666   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
Юзай FindWindow и FindWindowEx
Post #: 2
RE: Окно "Запуск программы" - 2007-01-27 01:00:22.773333   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30
Вот, на тебе код, только что написал (C++):

HWND CmdRun = FindWindow(NULL, "Запуск программы"); HWND ComboBox = GetWindow(GetWindow(GetWindow(GetWindow(CmdRun, GW_CHILD), GW_HWNDNEXT), GW_HWNDNEXT), GW_HWNDNEXT); WPARAM Length = SendMessage(Child, WM_GETTEXTLENGTH, NULL, NULL); char *Buffer = new char [Length+1]; SendMessage(Child, WM_GETTEXT, Length+1, (LPARAM)Buffer);
После выполнения программы, в случае, если в момент ее запуска окно "Запуск программы" было открыто - в переменной Buffer сохранится текст из комбо-бокса.
Post #: 3
RE: Окно "Запуск программы" - 2007-01-27 01:04:40.026666   
TheFeaR

Сообщений: 1923
Оценки: 0
Присоединился: 2006-01-25 18:16:33
а не проще отключить службу сообщений?
Post #: 4
RE: Окно "Запуск программы" - 2007-01-27 02:50:22.116666   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000

quote:

ORIGINAL: TheFeaR

а не проще отключить службу сообщений?

Некоторые любят делать все через зад .. например билли гей, тсс …
Post #: 5
RE: Окно "Запуск программы" - 2007-01-27 02:53:35.133333   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
запускать / останавливать сервисы можно так:

uses ..., WinSvc; ... h_manager, h_svc: SC_Handle; svc_status: TServiceStatus; dwCheckPoint: DWord; ... function StartSvc(const aServiceName: PChar): boolean; begin svc_status.dwCurrentState := 1; h_manager := OpenSCManager('', nil, SC_MANAGER_CONNECT); if h_manager &gt; 0 then begin h_svc := OpenService(h_manager, aServiceName, SERVICE_START or SERVICE_QUERY_STATUS); if h_svc &gt; 0 then begin temp := nil; if StartService(h_svc, 0, temp) then if QueryServiceStatus(h_svc, svc_status) then begin while SERVICE_RUNNING &lt;&gt; svc_status.dwCurrentState do begin dwCheckPoint := svc_status.dwCheckPoint; Sleep(svc_status.dwWaitHint); if not QueryServiceStatus(h_svc,svc_status) then break; if svc_status.dwCheckPoint &lt; dwCheckPoint then break; end; end; CloseServiceHandle(h_svc); end; CloseServiceHandle(h_manager); end; Result := SERVICE_RUNNING = svc_status.dwCurrentState; end; function StopSvc(const aServiceName: PChar): boolean; begin h_manager:=OpenSCManager('', nil, SC_MANAGER_CONNECT); if h_manager &gt; 0 then begin h_svc := OpenService(h_manager, aServiceName, SERVICE_STOP or SERVICE_QUERY_STATUS); if h_svc &gt; 0 then begin if ControlService(h_svc,SERVICE_CONTROL_STOP, svc_status) then begin if QueryServiceStatus(h_svc, svc_status) then begin while SERVICE_STOPPED &lt;&gt; svc_status.dwCurrentState do begin dwCheckPoint := svc_status.dwCheckPoint; Sleep(svc_status.dwWaitHint); if not QueryServiceStatus(h_svc,svc_status) then break; if svc_status.dwCheckPoint &lt; dwCheckPoint then break; end; end; end; CloseServiceHandle(h_svc); end; CloseServiceHandle(h_manager); end; Result := SERVICE_STOPPED = svc_status.dwCurrentState; end;
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Окно "Запуск программы"







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.