Hi,
ich hoffe ich habe dich richtig verstanden. Wenn ja, dann geht das so:
Delphi-Quellcode:
interface
uses {Andere Units}, ShellApi;
...
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(
Handle, '
open', '
C:\',
nil,
nil, SW_SHOWNORMAL);
// Laufwerk C: öffnen
end;
// By toms [url]http://www.delphipraxis.net/post371887.html#371887[/url]
function FindWindowByTitle(WindowTitle:
string): Hwnd;
var
NextHandle: Hwnd;
NextTitle:
array[0..255]
of char;
begin
// Get the first window
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
while NextHandle > 0
do
begin
// retrieve its text
GetWindowText(NextHandle, NextTitle, 255);
if Pos(WindowTitle, StrPas(NextTitle)) <> 0
then
begin
Result := NextHandle;
Exit;
end
else
// Get the next window
NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
end;
Result := 0;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Wnd: HWND;
begin
Wnd := FindWindowByTitle('
(C:)');
// Laufwerk C: suchen (Siehe Code von toms)
if Handle <> 0
then
PostMessage(Wnd, WM_CLOSE, 0, 0);
// Wenns gefunden wurde, dann beenden
end;
Die Buttonklicks musst du natürlich nicht übernehmen. Das war nur für mich zum Testen. Den letzten Code kannst du z.B. in einen Timer schreiben um C: wieder zu schließen.