Entwickler-Ecke
Windows API - Systemsteuerung im Explorer öffnen
TheUnknown - Fr 16.05.03 11:12
Titel: Systemsteuerung im Explorer öffnen
Hallo
mit dem Befehl EXPLORER.EXE /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} kann man den Windowsexplorer so öffnen, dass er den "Arbeitsplatz" voreingestellt hat. Es geht, je nach CLSID auch mit dem Papierkorb oder den Eigenen Dateien. Nur mit der Systemsteuerung klappt das einfach nicht. Die CLSID für die Systemsteuerung lautet meinen Recherchen nach {21EC2020-3AEA-1069-A2DD-08002B30309D}, doch wenn ich diese ID einsetze, kommt nur Laufwerk C:. Ich weiss, es geht mit diversen Verknüpfungen, aber ich will es unbedingt über ShellExecute so aufrufen, dass die Systemsteuerung per explorer.exe aufgerufen wird. Es geht auch über rundll32.exe, aber das ist nicht des selbe...
Habt Ihr eine Peile, wie ich die Systemsteuerung im Explorer über einen Parameter an explorer.exe öffnen kann?
AndyB - Fr 16.05.03 11:15
Na dann starte einfach das Programm control.exe.
Lui - Fr 16.05.03 11:31
Titel: FindWindow ist auch eine Möglichkeit
Es besteht die Möglichkeit mit findWindow den Arbeitsplatz im Explorer zu öffnen. Die genaue Syntax hab ich jetzt aber nicht parat.
Aber ich denke hier gibts bestimmt einige die wissen was ich meine und die Syntax nachtragen.
Ich glaub ungefähr so:
FindWindow(nil, 'Arbeitsplatz',show) IST ABER BESTIMMT VOLLER BUGGS! Auf jedenfall so ungefähr. Kompatibilität auf anders sprachigen rechnern ist aufgrund des deutschen Strings nicht möglich. Sorry das ich dir keine genaueren Angaben geben kann.
Aber wie gesagt, wäre nett wenn jemand meinen 'code' von oben aktuallisiert und die Syntax korrigiert.
Und auch sorry wenn ich vollkommen am Thema vorbei geschrieben hab. :lol:
MfG
Lui
Delete - Fr 16.05.03 12:16
Die Alternative zu
| AndyB hat folgendes geschrieben: |
| Na dann starte einfach das Programm control.exe. |
:wink:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| uses ShlObj, ShellAPI;
procedure OpenFolder(iGUID: integer); var sei : TShellExecuteInfo; lpItemId : PItemIdList; begin if(SHGetSpecialFolderLocation(0,iGUID,lpItemId) = NO_ERROR) then begin ZeroMemory(@sei,sizeof(TShellExecuteInfo)); sei.cbsize := sizeof(TShellExecuteInfo); sei.nShow := SW_SHOWNORMAL; sei.lpVerb := 'open'; sei.fMask := SEE_MASK_IDLIST; sei.lpIDList := lpItemId;
ShellExecuteEx(@sei); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin OpenFolder(CSIDL_CONTROLS);
end; |
Weitere CSIDL-Werte findet man online im MSDN bzw. im PSDK von Microsoft. Ich habe das vor einiger Zeit schon mal im EF gepostet, aber vielleicht wär´s auch was für die hiesigen FAQs?
Gruß.
foxy - Fr 16.05.03 12:20
jo mathias mach ma faq mich würde das auch interessieren
TheUnknown - Fr 16.05.03 13:18
Hmm, dankeschön an alle, aber so ist's immer noch nicht so, wie ich es meinte.
Ich möchte (wahlweise, per Parameter oder per IF-Befehl) noch die Baumstruktur auf der linken Seite haben...
Delete - Fr 16.05.03 16:53
Dann ersetze bitte die Zeile
durch
Delphi-Quelltext
1:
| sei.lpVerb := 'explore'; |
Damit startet der Explorer wie gewohnt mit dem Baum auf der linken Seite, zeigt dir aber das zuvor gewählte Verzeichnis an.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!