![]() |
Laufwerk C:\ öffnen und beenden
Hi,
ich bin am verzweifeln, vielleicht könnt ihr mir ja helfen: Ich möchte ein Programm schreiben, dass das Laufwerk C:\ anzeigt (also wie, wenn man Arbeitsplatz -> C klickt) und es dann auch wieder selbsständig schließen kann (nach einer gewißen Zeit). Ich habe schon probiert einen Process zu Createn, wo ich das HWND zurückbekomme von der explorer.exe mit der ich es getestet hatte, aber irgendwie ging das dann nicht zu beenden. Ich weiß nicht mehr weiter, mein Problem ist erstens: Wie öffne ich überhaupt das Laufwerk? Und zweitens: Wie bekomme ich das Handle um es dann wieder zu schließen? Vielen Dank im vorraus Markus |
Re: Laufwerk C:\ öffnen und beenden
Zitat:
|
Re: Laufwerk C:\ öffnen und beenden
Naja, das es sich genauso öffnet, wie wenn du auf Arbeitsplatz und dann auf C:\ klickst, nur, dass das Programm es öffnet ;)
|
Re: Laufwerk C:\ öffnen und beenden
Schau dir mal unter Beispiele den ShellListView, ShellTreeView und die ShellComboBox an. (als alternative)
|
Re: Laufwerk C:\ öffnen und beenden
Hi,
ich hoffe ich habe dich richtig verstanden. Wenn ja, dann geht das so:
Delphi-Quellcode:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz