Главная страница
    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.056 c
8-1131797302
zxc
2005-11-12 15:08
2006.04.16
одновременно avi показывать и сверху рисовать


2-1143618643
Erik1
2006-03-29 11:50
2006.04.16
Освобождение строк.


3-1140417228
Os
2006-02-20 09:33
2006.04.16
Удаление дублирующих записей


11-1124457159
Seeker
2005-08-19 17:12
2006.04.16
проблема с Listbox


15-1143447405
Курдль
2006-03-27 12:16
2006.04.16
Ищу идей по технологиям доступа к oracle из программ под Solaris.





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