Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.16;
Скачать: CL | DM;

Вниз

Пропадает Task bar,tray,start.   Найти похожие ветки 

 
Pit ©   (2006-01-31 21:25) [0]

Помогите решить проблему, после выполнения, пропадает Task bar,tray,start.
Это относится только к не отвечающим программам и My Computer.

const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
           TheWindow := FindWindow(nil," My Computer");   \\ или  FindWindow(nil," Untitled - Notepad");  
           GetWindowThreadProcessID(TheWindow, @ProcessID);
           ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessID);
TerminateProcess(ProcessHandle,4);


При явном указании TheWindow := FindWindow("notepad"," Untitled - Notepad"); все работает нормально.

System  Error.  Code: 1400.
Invalid window handel.


 
Rouse_ ©   (2006-01-31 21:36) [1]


> TheWindow := FindWindow(nil," My Computer");

результат этой функции по всей видимости ноль лежащий в TheWindow ?


 
kaZaNoVa ©   (2006-01-31 21:55) [2]

Pit ©   (31.01.06 21:25)

> TheWindow := FindWindow(nil," My Computer");  
> TerminateProcess(ProcessHandle,4);

ты убиваешь Explorer и конечно пропадет оболочка ..

а в чем смысл кода? убивать приложение по  окну ?


 
Pit ©   (2006-01-31 22:12) [3]

> TheWindow := FindWindow(nil," My Computer");
результат этой функции по всей видимости ноль лежащий в TheWindow ?
По всей видимости это так.

> kaZaNoVa
Да код убивает приложение по окну,  но я не пойму по чему пропадает оболочка Explorer и почему когда убиваешь
зависший блокнот или любое другое зависшее приложение пропадает оболочка Explorer, любое нормально работающее окно убивает без проблем.


 
Игорь Шевченко ©   (2006-01-31 22:29) [4]

Возвращаемое функциями значение надо проверять.


 
Pit ©   (2006-01-31 22:38) [5]

Удалено модератором


 
Rouse_ ©   (2006-02-01 10:25) [6]


> По всей видимости это так.

Но соответвтует десктопу. Его ты и грохаешь...


 
kaZaNoVa ©   (2006-02-01 11:59) [7]

Pit ©   (31.01.06 22:12) [3]
для выяснения ошибок можно еще попробовать:
MessageBox(0,Pchar(SysErrorMessage(GetLastError)),Pchar(Inttostr(GetLastError)),0);


 
Pit ©   (2006-02-01 12:23) [8]

на это MessageBox(0,Pchar(SysErrorMessage(GetLastError)),Pchar(Inttostr(GetLastError)),0);

пишит
The operation completed successfully


 
Pit ©   (2006-02-01 12:33) [9]

Попробуй сам вот это
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(nil," My Computer");
  GetWindowThreadProcessID(TheWindow, @ProcessID);
  ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
  TerminateProcess(ProcessHandle,4);


А потом это
TheWindow := FindWindow(nil,"Сalculator");


 
Pit ©   (2006-02-01 12:39) [10]

Почему при таком раскладе пропадает дектоп
TheWindow := FindWindow(nil,"Любое зависшее приложение");
 GetWindowThreadProcessID(TheWindow, @ProcessID);
 ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
 TerminateProcess(ProcessHandle,4);


 
kaZaNoVa ©   (2006-02-01 12:42) [11]

Pit ©   (01.02.06 12:39) [10]

> "Любое зависшее приложение"

а по какому принципу приложение считается "зависшим"  ?


 
Pit ©   (2006-02-01 12:49) [12]

Например открываешь блокнот и пихаешь туда 100 мегабайт текста.
Я пробую на 86 примерно.
Когда он виснит пытаюсь его убить, дальше знаешь сам.


 
kaZaNoVa ©   (2006-02-01 13:18) [13]

Pit ©   (01.02.06 12:49) [12]
забавно, но ты прав .. у меня так же ..

0-лей там не наблюдал, тока другой ID окна на  GetWindowText - выдаёт калькулятор а на GetWindowThreadProcessID   - Explorer (!) ...


 
kaZaNoVa ©   (2006-02-01 13:25) [14]

при чем разницы не было, от кого был запущен калькулятор .. (родительский процесс) , следовательно думаю проблема в "некорретном" идентификаторе или просто "не том" который возвращет FindWindow ..  (но GetWindowText  почему-то нормально с ним работает)



Страницы: 1 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.033 c
15-1143365646
Хостер
2006-03-26 13:34
2006.04.16
сервер под виндой


15-1142855044
carmen
2006-03-20 14:44
2006.04.16
пример плагинов bpl з базой данных


15-1143567802
Нехочуха
2006-03-28 21:43
2006.04.16
Побольше дискуссий, хороший и разных.


15-1143442491
Gleb
2006-03-27 10:54
2006.04.16
Где можно скачать новые компоненты для Delphi 7


2-1143980731
Khim
2006-04-02 16:25
2006.04.16
Нажатие кнопок меню на TAppBuilder