ShellExecute Problem

LoKi1

Mitglied
Hallo,

bin neu hier im Forum und auch noch zimlich neu in C++. Also um zu meinem Problem zu kommen... Ich habe eine MFC Anwendung erstellt die auf eine ODBC Quelle zugreift. In einer der Spallten der ODBC Quelle steht die INFO zum Pfad ,in einer anderen die INFO zu der dazugehörigen Datei. Es soll sich dann das Programm mit der bestimmten Datei öffnen(Excel).
ShellExecute(NULL,"open",m_pSet->m_Pfad_Original+m_pSet->m_Datei, NULL, NULL, SW_SHOWNORMAL);


Das ganze funktioniert auch so weit...
Angenommen in der ODBC Quelle steht zwar was drin aber die Datei existiert in wirklichkeit garnicht an dieser Stelle, müsste ich ja eine Fehlermeldung ausgeben. Da ShellExecute ein Return Value hat das ERROR_FILE_NOT_FOUND heist wollte ich dieses in einer If Bedingung benutzen und wenn ein bestimmter Wert zutrifft eine MessageBox ausgeben mit z.B. "FEHLER". So um den wert herraus zu finden den ERROR_FILE_NOT_FOUND zurück gibt , wenn die datei nicht gefunden werden kann, habe ich eine globale int variable deklariert und lasse den wert von ERROR_FILE_NOT_FOUND an sie übergeben und mir anzeigen. So mein Problem ist das der Wert immer gleich ist... egal ob die Datei gefunden wird oder nicht. Der Wert ist immer 3.... Kann mir jemand bei meinem Problem helfen Oder mache ich komplett was falsch
 
Zuletzt bearbeitet:
Da musst du dann schon etwas Code zeigen.

Eine Vermutung: Du hast bei der Überprüfung nur = statt == geschrieben?
 
ShellExecute(NULL,"open",m_pSet->m_Pfad_Original"\\"+m_pSet->m_Report, NULL, NULL, SW_SHOWNORMAL);


if(ERROR_FILE_NOT_FOUND==3)
{
MessageBox("Datei nicht gefunden","FEHLER",MB_OK | MB_ICONSTOP);
}
 
Mein Prob ist das immer der Wert drei zurück gegeben wird.... also kann ich ja keine If bedingung wie obern schreiben weil das ja bedeuten würde das immer die MessageBox geöffnet wird.... Ich weis halt nicht wie ich die Fehlermedung anders einleiten soll :(
 
du überprüfst ob ERROR_FILE_NOT_FOUND == 3 ist. Das sollte eigentlich immer false sein, da ERROR_FILE_NOT_FOUND den Wert 2 besitzt. D.h. die Bedingung in der if Anweisung ist nie erfüllt.
Du musst den Rückgabewert von ShellExecute prüfen.

Code:
HINSTANCE x == ShellExecute(NULL,"open",m_pSet->m_Pfad_Original+"\\"+m_pSet->m_Report, NULL, NULL, SW_SHOWNORMAL);


if(x==ERROR_FILE_NOT_FOUND)
{
MessageBox("Datei nicht gefunden","FEHLER",MB_OK | MB_ICONSTOP);
}
 
wie kann ich das machen? Code ? wäre echt wenn du mir das mal zeigen könntest

ups. verpeilt.... danke erst mal
 
Zuletzt bearbeitet:
Zurück