Jag behöver en API som kan starta och visa Windows sökfunktion, den som finns på Start-menyn, för en felhanerare, som ska ta hand om fall där en vald filsökväg inte existerar. API:n bör kunna ta ett filnamn som argument och sätta aktiv enhets rotmapp som startmapp. Hejsan! Jo, jag kom en bit på väg, tackar, Budda!. I VBA för Excel (och troligen resten av Office-sviten) kan man inte använda Me i API:er, det har jag märkt förut, utan det får man ta bort. Nu undrar jag var man stoppar in det filnamn man ska söka, så att användaren slipper skriva - och möjligen felstava - det själv. Jag ser att du använt SendKeys för att skicka filnamnet. Jag har dålig erfarenhet av SendKeys men får nog acceptera det ändå eftersom API:n inte verka ta några andra argument än startmapp. Jag har lagt till <code>SendKeys "{ENTER}"</code> för att starta sökningen automatiskt. Hej!API - visa Start-menyns sökdialog
Sv: API - visa Start-menyns sökdialog
Här är en jag använt i VB för att öppna windows-sökformulär.. Det kan säkert anpassas på något sätt för att ta emot filnamn...
I en event:
<code>
Dim hWndDesk As Long
Dim success As Long
Dim sFile As String
sFile = Left(App.Path, 2)
hWndDesk = GetDesktopWindow()
success = ShellExecute(Me.hwnd, "find", _
sFile, _
vbNullString, _
vbNullString, _
SW_SHOWNORMAL)
</code>
I en modul:
<code>
Option Explicit
Public Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Public Declare Function GetDesktopWindow Lib "user32" () As Long
</code>
Hoppas detta hjälper dig på traven!
Ett sätt att lösa filnamns problemet är att köra
<code>
SendKeys "FilNamnet"
</code>
Det är ingen "snygg" lösning men den fungerar i win 2000 när jag testade...
(ex. är gjort i VB6 och inte testat i VBA)
/FredrikSv: API - visa Start-menyns sökdialog
Sv: API - visa Start-menyns sökdialog
Jag satt precis och kollade på koden jag postat och såg att "GetDesktopWindow" inte används någonstans... Jag klippte det från ett program jag gjort för 3 år sen och missade att ta bort det...
/Fredrik