Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Вниз

Пропадает 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.07 c
15-1143304649
Mozart
2006-03-25 19:37
2006.04.16
Delphi и Linux


15-1143016899
SergP.
2006-03-22 11:41
2006.04.16
Кто-нить помнит команду очистки Black-List a в модеме?


2-1143631502
49 Cent
2006-03-29 15:25
2006.04.16
Графическое моделирование


3-1140273375
Yurc
2006-02-18 17:36
2006.04.16
MySQL ODBC


15-1142938271
Некто
2006-03-21 13:51
2006.04.16
ГОСТ техническое задание





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский