| |
VB & Windows APIRe: Rückgabewerte von ShellExecuteEx | | | Autor: stev-e87 | Datum: 07.02.10 12:38 |
| Jahhhh!!!
Das klappt. Mensch, als Hinundwiedermaletwascoder ist man ohne Leute wie dich ja echt angepiept.
Vielen Dank!!!
Hab auch echt im Leben nicht daran gedacht, dass es daran hängt. Dachte zu 100%, es liegt an Shellexecuteex, da mir in heimischer Entwicklungsumgebung die Funktion Shell das richtige Ergebnis lieferte. Leider konnte ich Shell als solches auf Arbeit nicht anwenden und hab mich auf diese Variante versteift... | |
Rückgabewerte von ShellExecuteEx | | | Autor: stev-e87 | Datum: 06.02.10 10:25 |
| Hallo Vb' ler,
ich versuche ein Programm zu starten via ShellExecuteEx alà http://www.vbarchiv.net/api/details.php?id=shellexecuteex
mein dazugehöriger Code:
Dim Retval, prid As Long, ShExInfo As SHELLEXECUTEINFO
' Startoptionen festlegen
With ShExInfo
.cbSize = Len(ShExInfo)
.fMask = SEE_MASK_FLAG_NO_UI Or SEE_MASK_CLASSNAME Or _
SEE_MASK_NOCLOSEPROCESS
.hwnd = Application.hwnd 'GetDesktopWindow()
.lpVerb = "open"
.lpFile = "I:\Portable\resource hacker\ResHacker.exe"
'.lpParameters
'.lpDirectory = "c:\"
.nShow = SW_SHOWNORMAL
End With
' Programm ausführen
Retval = ShellExecuteEx(ShExInfo)
If Retval = 0 Then
' bei Fehler Text ausgeben
Select Case ShExInfo.hInstApp
Case SE_ERR_ACCESSDENIED
Err.Raise 5, "ShellExecuteEx", "Zugriff verweigert"
Case SE_ERR_FNF
Err.Raise 5, "ShellExecuteEx", "Datei nicht gefunden"
Case SE_ERR_NOASSOC
Err.Raise 5, "ShellExecuteEx", "Datei ist mit keinem Programm verknüpft"
End Select
Else
' andernfalls Programmdaten ausgeben
'MsgBox "Datei gestartet: " & ShExInfo.lpFile
'Debug.Print "Dateiklasse: " & ShExInfo.lpClass
MsgBox "Prozess Handle: " & ShExInfo.hProcess
MsgBox "Instanz Handle:" & ShExInfo.hInstApp
'Call GetWindowThreadProcessId(ShExInfo.hProcess, prid)
MsgBox prid
End If Soooo, wie man in den letzten Zeilen Code erkennen kann, will ich aus dem Handle noch eine ID ermitteln. Aber soweit bin ich noch nicht, denn:
ShExInfo.hInstApp ergibt immer 42, also sone Dummy-Variante und
ShExInfo.hProcess ergibt immer 0...
Weiß vielleicht jemand, warum das so ist? Die Exe wird ordentlich gestartet. Hab ja auch nicht wirklich viel verändert.
Hm... | |
Re: Rückgabewerte von ShellExecuteEx | | | Autor: stev-e87 | Datum: 06.02.10 12:02 |
| Ja wie das immer so ist, wenn man erst mal das Forum besucht hat, fällts einem doch noch wie Schuppen von den Augen...
mit
.fMask = SEE_MASK_NOCLOSEPROCESS geht es, die ganzen or's haben das Ergebnis ruiniert. Jetzt aber folgendes Problem: ich verwende den Code in Excel VBA und dort kann ich kein me.hwnd setzen und deshalb meine Ausweichoption application.hwnd . Das liefert mir aber das Handle vom Explorer und nicht des gestarteten Programmes... In der Hoffnung, dass es mir jetzt auch gleich auffällt, wende ich mich noch einmal an euch...;)
gibt es ein Äquivalent für Excel- Tabellen? MfG | |
Re: Rückgabewerte von ShellExecuteEx | | | Autor: stev-e87 | Datum: 06.02.10 14:20 |
| Auch das Handle vom Explorer ;( ... | |
Re: Rückgabewerte von ShellExecuteEx | | | Autor: stev-e87 | Datum: 06.02.10 20:32 |
| Das verwirrt mich jetzt.
mit diesem Flag (Or- verknüpft) bekomme ich den Wert des bei mir laufenden Duden- Korrektors. Was ich noch anmerken muss: ich spreche die ganze Zeit vom Prozess- Handle. Das lasse ich mir aber gar nicht ausgeben, sondern die mittels Call GetWindowThreadProcessId(ShExInfo.hProcess, prid) ermittelte dazugehörige ProzessID, welche ich mit der im TaskManager angegebenen abgleiche.
lasse ich das hWnd in Shellexecutex weg, bekomme ich die ID vom Prozess Excel ?!, mit der Angabe hWnd die vom Prozess Explorer und mit dem zusätzlichen Flag jene vom Duden- Korrektor- wie gesagt. Mir schwirrt so langsam der Kopf... Warum nicht vom Resource Hacker, welchen ich mit shellexecuteex starte...
Hat das was mit Win7 zu tun??? | |
Re: Rückgabewerte von ShellExecuteEx | | | Autor: stev-e87 | Datum: 07.02.10 09:33 |
| Kritisches Thema ;) Soll eine Hilfestellung für den Arbeitsplatz werden, dann wird Resource Hacker durch eine andere Anwendung ersetzt. ResHacker lädt eben deutlich schneller...
Ja und da ist der Gebrauch von eigenen EXE- Files nicht gestattet. So eine quelloffene VBA- Geschichte ist da eben angebrachter.
Ich selber habe kein Visual Studio, kannst du den Codeschnipsel eventuell mal in VB testen? Dann hätte ich mal einen richtigen Vergleich ;( Das wäre wirklich sehr hilfreich. Vielen Dank an der Stelle trotzdem für die Unterstützung.
MfG | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|