![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить диалог
copyr25 © (2002-01-26 17:10:00)Программно т.е.?
copyr25 (2002-01-29 20:35:00) [1]Код yus"a прекрасно работает. Всем спасибо:))
serg001 (2002-01-29 14:40:00) [2]PostMessage(FindWindow(PChar("Shell_TrayWnd"),nil), WM_CLOSE,0,0);
B@Nt (2002-01-29 13:53:00) [3]В ФАКЕ есть статья под названием:="Малоизвестные команды для запуска из командной строки".
Там точно есть, что тебе надо.
yus (2002-01-27 22:56:00) [4]Проще explorer послать WM_Close
procedure TForm1.Button1Click(Sender: TObject);
var
Hand:THandle;
begin
hand := FindWindow(nil,"Program Manager");
postmessage(hand ,wm_close,0,0);
end;
copyr25 (2002-01-27 19:06:00) [5]Увы, ExitWindowsEx не вызывает диалог "Завершение работы",
она выполняет его пункты меню.
Я додумался лишь до такого прикола :))
procedure TForm1.Button1Click(Sender: TObject);
var
Tray,Child: HWnd;
R:TRect;
C : Array[0..127] of Char;
S : String;
P: TPoint;
begin
Tray:=FindWindow("Shell_TrayWnd",nil);
Child:=GetWindow(Tray,GW_CHILD);
while Child <> 0 do
begin
If GetClassName(Child,C,SizeOf(C)) > 0
then
//////// ищем кнопку "Пуск"
begin
S:=StrPAS(C);
If UpperCase(S)="BUTTON" then
//////// определяем координаты центра кнопки "Пуск"
begin
GetWindowRect(Child,R);
P.x:=R.Left+(R.Right-R.Left) div 2;
P.y:=R.Top+(R.Bottom-R.Top) div 2;
//////// нажимаем на кнопку "Пуск"
SetCursorPos(P.x,P.y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,P.x,P.y,0,0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,P.x,P.y,0,0);
//////// вызываем диалог "Завершение работы..."
SetCursorPos(P.x,P.y-25); // <-- если таскбар лежит внизу
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,P.x,P.y,0,0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,P.x,P.y,0,0);
end;
end;
Child := GetWindow(Child,GW_HWNDNEXT);
end;
end;
copyr25 (2002-01-27 01:56:00) [6]Ok
Olgerd (2002-01-27 01:14:00) [7]Послать WM_Close explorer"у
Raptor (2002-01-26 23:01:00) [8]Попробуй ExitWindowsEx.