Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Problem beim benutzen von CreateProcessA und dem Arbeitsverzeichnis

Frage Entwicklung VB for Applications

Mitglied: miniversum

miniversum (Level 3) - Jetzt verbinden

15.10.2008, aktualisiert 10:18 Uhr, 3100 Aufrufe, 1 Kommentar

Hallo
Ich arbeite mit einem Excel 2003 unter Windows xp sp3.
In einem Excelmakro möchte ich ein Externes Programm starten und warten bis dieses beendet ist.
Das mache ich mit diesem Teil des Codes (nur mal der relevante Teil). Soweit funktioniert das auch.
01.
Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, _ 
02.
ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, _ 
03.
ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, _ 
04.
ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, _ 
05.
ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, _ 
06.
lpProcessInformation As PROCESS_INFORMATION) As Long 
07.
Private Const NORMAL_PRIORITY_CLASS = &H20& 
08.
 
09.
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 
10.
 
11.
 
12.
Sub ShellAndWait(ByVal Filename As String) 
13.
Dim RetVal As Long 
14.
Dim proc As PROCESS_INFORMATION 
15.
Dim StartInf As STARTUPINFO 
16.
 
17.
StartInf.cb = Len(StartInf) 
18.
 
19.
'Angegebenes Programm starten 
20.
RetVal = CreateProcessA(0&, Filename, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, StartInf, proc) 
21.
 
22.
'Das eigene Programm anhalten, bis das fremde beendet wurde 
23.
RetVal = WaitForSingleObject(proc.hProcess, INFINITE) 
24.
RetVal = CloseHandle(proc.hProcess)
Mein Problem ist nun, dass das aufgerufene Programm als Arbeitsverzeichnis "Eingene Dateien" verwendet. Wie kann ich das ändern?
Ichhabe schon versucht ihm das Verzeichnis des Programms als "lpCurrentDirectory" mit zu übergeben. Das bekomme ich aber einfach nicht hin. Weder direkt als String "C:\Verzeichnis" (führt zu einem Fehler, ist auch klar, war ein Versuch), noch als StrPtr("C:\Verzeichnis") (Programm startet einfach garnicht, Keine Fehlermeldung).
Meine Suche im Internet ergab auch keine Lösung. Hat das schonmal jemand gemacht und kann mit helfen?

miniversum
Mitglied: miniversum
15.10.2008 um 10:18 Uhr
Hat sich erledigt.
Bei der Funktionsdeklaration kann man den Parameter "lpCurrentDirectory" nicht nur as Long sondern auch as String angeben. Danach ist eine Direkte Zuweisung als String möglich.
Bitte warten ..
Ähnliche Inhalte
Exchange Server
Exchange 2010 und Outlook 2016 - Problem bei einem Benutzer (1)

Frage von float-left zum Thema Exchange Server ...

Batch & Shell
gelöst AD: alle Domänen Benutzer - Problem OU CN (2)

Frage von lupolo zum Thema Batch & Shell ...

Windows 10
gelöst Benutzer verschwunden (11)

Frage von voggfritz zum Thema Windows 10 ...

Windows 10
Administratorenrechte für Benutzer (16)

Frage von Axel90 zum Thema Windows 10 ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (23)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...