Главная страница
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.067 c
2-1143722229
EXILE
2006-03-30 16:37
2006.04.16
Указатели


8-1131415843
Mozart
2005-11-08 05:10
2006.04.16
Взаимодействие с Flash


15-1143551972
oldman
2006-03-28 17:19
2006.04.16
Для любителей группы "Черный кофе" (старой, годика 1987....)


15-1143558642
oldman
2006-03-28 19:10
2006.04.16
Gluteus maximus...


8-1130421802
Андрей_7
2005-10-27 18:03
2006.04.16
Как программным путем вставлять в Nero Wave Editor волны