Главная страница
    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.083 c
15-1143179220
pkm
2006-03-24 08:47
2006.04.16
Help.


2-1144234595
Alex_C
2006-04-05 14:56
2006.04.16
Как передать фокус чужому приложению?


15-1143620105
balepa
2006-03-29 12:15
2006.04.16
Нормально ли?


11-1124430638
Gothic 1
2005-08-19 09:50
2006.04.16
Использование компонентов из VCL


2-1143691292
alk
2006-03-30 08:01
2006.04.16
Работа с DCOM





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский