problem z zamykaniem

0

dlaczego jak dam polecenie :
SendMessage(uchwyt),WM_close,0,0); to nie moge wylaczyc okna exploratora np. MOj komputer .Moge niz za to wylaczyc inne okna np. Winampa Poleconko Destroy tesch nie działa tylko zwiesza mi okno exploratora .Jak by co to używam wim XP
Dalzcego tak sie dzieje i jak zrobić by mieć możliwość zamknięcia wszystkich okin jakie są otwarte w systemie:)

0

No bo tak juz jest z winem - niektórych nie da się zamknąć (na pewno jest jakies przerwanie)

ja proponuję taką funkcję

function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);

while integer(ContinueLoop) &lt&gt 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;

\

aby ją wywołać trzeba wpisać

try
KillTask ('IEXPLORE.EXE');
except;
exit;
end;

w miejsce IEXplore.exe mozesz wpisać inny program

a i jeszcze:

zamiast uchwytu to poprzez tytuł okna

FindWindow( nil, 'Mój komputer', WM_CLOSE, 0, 0 );

ale jest jeszcze jedno :) co najbardziej będzie tobie odpowiadać :P

przytrzymaj wciśnięty ctrl (lewy)
i najedź kursorem na wyraz (w swojej procedurze) "WM_CLOSE"
(wyraz się podświetli) i naciśnij na niego.
Pokaże ci się lista wszystkich dostępnych komand dla okna :]

w tym WM_EXIT - co niekiedy polecam :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1