Bitte um Schnelle Hilfe bei char oder String bearbeiten.
-
Hallo Leute ich hab einen Aufruf der einen festen Pfad braucht. Da meine Start.exe im selben Verzeichennis würde ich gerne das Verzeichnis abfragen und einen String zusammmen zu bauen.
Bin totaler Neuling in c++ und bin froh, wenn das Programm durchkompiliert.
Im Moment scheitere ich daran
aus einem Char das den Pfad des Programms enthält, das Verzeichnis zu extraieren und einen weiteren Char anzuhängen umd ein Programm mit Parameter aufzurufen.HIer mal Code
(bitte immer mit #include)#include <cstdlib> #include <iostream> #include <windows.h> #include <conio.h> using namespace std; int main(int argc, char *argv[]) { ... char strPath[MAX_PATH]; GetModuleFileNameA(NULL,strPath,MAX_PATH); //strPfad enthält auch den Programmname, der muss weg //also von d:\\datenbanken\\start.exe zu d:\\datenbanken\\ //WinExec Führt Programm aus //MeineDatenbank.mde muss noch um ein Pfad ergänzt werden wie d:\\datenbanken\\ WinExec("\"C:\\Programme\\Microsoft Office\\OFFICE11\\MSACCESS.EXE\" MeinDatenbank.mde",SW_SHOW); return EXIT_SUCCESS; }
-
#undef UNICODE #undef _UNICODE #pragma warning(disable:4996) #include <stdlib.h> #include <string.h> #include <windows.h> int main(int argc, char *argv[]) { ... char *strAPfad = "\"C:\\Programme\\Microsoft Office\\OFFICE11\\MSACCESS.EXE\""; char *strDB = "MeinDatenbank.mde"; char strEx[MAX_PATH]; char strPath[MAX_PATH]; GetModuleFileNameA(NULL,strPath,MAX_PATH); /* geht hier davon aus, dass Verzeichnistrennzeichen existiert */ *(strrchr( strPath, '\\' )+1)=0; strcpy( strEx, strAPfad ); strcat( strEx, " \"" ); strcat( strEx, strPath ); strcat( strEx, strDB ); strcat( strEx, "\"" ); WinExec( strEx, SW_SHOW ); return EXIT_SUCCESS; }
-
#pragma warning(disable:4996) #include <windows.h>
->falsches subforum
-
Note: This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.
Oder ShellExecute(Ex).
-
Es funktioniert! Klasse!
Nur noch mal zur Vorsicht, falls der Pfad zu lang ist kommt eine Fehlermeldung.
Um es noch ein wenig schöner zu machen, weiß jemand wie man den Access Pfad herausbekommt und da dynamisch einbaut?
Gruß
Rahan
-
Durchsuch doch einfach mal die Registrierung. Unter HKEY_LOCAL_MACHINE\Software\Microsoft\Office stehen verschiedene Versionen. Du musst einen HKEY erstellen und jede Version nach Access durchsuchen, der Pfad liegt unter InstallRoot (oder ähnlich).
-
Wenn dein Access korrekt im System installiert und registriert ist, geht statt WinExec auch:
system("start \"c:\\dein pfad zur db\\MeinDatenbank.mde\"");
und du benötigst keinen Accesspfad und Registrygedöns.
-
Naja, dann aber ein
ShellExecute(0,"open",/*Name der Datei*/,0,0,SW_SHOWNORMAL);