none
ProcessShellCommand RRS feed

  • Frage

  • Hallo,

    ich habe eine SDI-Anwendung, die zum Teil über eine BAT-Datei gestartet wird und damit auch die Übergabeparameter mit bekommt, z.B sieht der Inhalt einer BAT-Datei so aus:

    "C:\a\b\c 1\xyz.exe" /KLM "Y:\g\h\i\123.KLM"

    Wird die BAT-Datei nun gestartet, wird dadurch die SDI-Anwendung xyz.exe ausgeführt und die Übergabeparameter übergeben. Wenn nun die übergebene Datei "Y:\g\h\i\123.KLM" tatsächlich nicht vorhanden ist, kommt folgende Meldung im Dialogfenster:

    Y:\g\h\i\123.KLM wurde nicht gefunden.

    Diese Dialogfenster darf nicht erscheinen. Leider finde ich aber die Stelle nicht, wo das Dialogfenster gestartet/angezeigt wird. Ich habe es soweit eingegrenzt, dass es mit der Funktion ProcessShellCommand zu tun haben könnte. In meiner Funktion InitInstance() steht folgender Programmcode:

    if (!ProcessShellCommand(cmdInfo))
      return FALSE;

    Was muss ich tun, damit das oben genannte Dialogfenster nicht erscheint?

    Danke im Voraus und viele Grüße

    Bernd

    Donnerstag, 28. April 2016 12:04

Antworten

  • Hallo,

    folgender Programmcode hat mich schon etwas weiter gebracht.

    // Die externe Übergabe ermitteln
    m_strExterneUebergabe = ExterneUebergabeErmitteln();
    
    // Befehlszeile parsen, um zu prüfen auf Standard-Umgebungsbefehle DDE, Datei offen
    CCommandLineInfo cmdInfo;
    if (m_strExterneUebergabe == "")	// ohne Übergabeparameter
    {
    	ParseCommandLine(cmdInfo);
    }
    else 
    {
    	// Die Membervariable für eine neue Datei setzen
    	cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;
    }
    
    // Verteilung der in der Befehlszeile angegebenen Befehle
    if (!ProcessShellCommand(cmdInfo))
    	return FALSE;
    

    Ich muss aber noch weitere Test durchführen und melde mich gegebenenfalls wieder.

    Viele Grüße

    Bernd

    Montag, 2. Mai 2016 07:54

Alle Antworten

  • Hallo Bernd,

    Vielleicht hilft Dir die von Scott McPhillips vorgeschlagene Vorgehensweise aus diesem Thread weiter. Ich führe sie der Vollständigkeit halber an:

    CCommandLineInfo cmdInfo;
    ParseCommandLine(m_cmdInfo);
    m_cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;
    if (!ProcessShellCommand(m_cmdInfo))
             return FALSE;

    Gruß,
    Dimitar

    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 29. April 2016 11:59
    Administrator
  • Hallo Dimitar,

    danke für Deine Information. Ich melde mich, ob ich damit weiter komme.

    Viele Grüße

    Bernd

    Montag, 2. Mai 2016 05:25
  • Hallo,

    folgender Programmcode hat mich schon etwas weiter gebracht.

    // Die externe Übergabe ermitteln
    m_strExterneUebergabe = ExterneUebergabeErmitteln();
    
    // Befehlszeile parsen, um zu prüfen auf Standard-Umgebungsbefehle DDE, Datei offen
    CCommandLineInfo cmdInfo;
    if (m_strExterneUebergabe == "")	// ohne Übergabeparameter
    {
    	ParseCommandLine(cmdInfo);
    }
    else 
    {
    	// Die Membervariable für eine neue Datei setzen
    	cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;
    }
    
    // Verteilung der in der Befehlszeile angegebenen Befehle
    if (!ProcessShellCommand(cmdInfo))
    	return FALSE;
    

    Ich muss aber noch weitere Test durchführen und melde mich gegebenenfalls wieder.

    Viele Grüße

    Bernd

    Montag, 2. Mai 2016 07:54