Окно "Запуск программы"
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Окно "Запуск программы" - 2007-01-26 22:17:14.350000
|
|
|
sinker
Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
|
Мне нужно из ComboBox-а в окне "Запуск программы" (Win+R) считать текст, и если текст = "net send" тогда вырезать из окна этот текст. Язык - Дельфи. Окно имеет фокус ввода.
|
|
|
RE: Окно "Запуск программы" - 2007-01-27 00:31:17.796666
|
|
|
blacksun
Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
|
Юзай FindWindow и FindWindowEx
|
|
|
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 сохранится текст из комбо-бокса.
|
|
|
RE: Окно "Запуск программы" - 2007-01-27 01:04:40.026666
|
|
|
TheFeaR
Сообщений: 1923
Оценки: 0
Присоединился: 2006-01-25 18:16:33
|
а не проще отключить службу сообщений?
|
|
|
RE: Окно "Запуск программы" - 2007-01-27 02:50:22.116666
|
|
|
blacksun
Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
|
quote:
ORIGINAL: TheFeaR а не проще отключить службу сообщений? Некоторые любят делать все через зад .. например билли гей, тсс …
|
|
|
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 > 0 then
begin
h_svc := OpenService(h_manager, aServiceName,
SERVICE_START or SERVICE_QUERY_STATUS);
if h_svc > 0 then
begin
temp := nil;
if StartService(h_svc, 0, temp) then
if QueryServiceStatus(h_svc, svc_status) then
begin
while SERVICE_RUNNING <> 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 < 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 > 0 then
begin
h_svc := OpenService(h_manager, aServiceName, SERVICE_STOP or SERVICE_QUERY_STATUS);
if h_svc > 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 <> 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 < dwCheckPoint then break;
end;
end;
end;
CloseServiceHandle(h_svc);
end;
CloseServiceHandle(h_manager);
end;
Result := SERVICE_STOPPED = svc_status.dwCurrentState;
end;
|
|
|
|
|