Announcement

Collapse
No announcement yet.

DOS-Ausgabe in mein eigenes Programm umleiten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DOS-Ausgabe in mein eigenes Programm umleiten

    Hi <br><br>

    hat schon mal jemand versucht ein Dosprogramm unsichtbar aufzurufen und die ausgabe im eigenen Fenster anzeigen.
    <br>
    <br>
    ich arbeite mit BCB 5.0
    <br>
    <br>
    <br>
    <br>
    Vielen Dank im Voraus.

  • #2
    Unsichtbar aufrufen: SW_HIDE oder evtl. SW_MINIMIZE.

    Ausgabe lesen: An den DOS-Befehl " > Dateiname " anhängen, und dann die Datei lesen und anzeigen. Wenn der DOS-Befehl nach einer bekannten Zeit fertig ist, kannst Du mit einem Timer entsprechend lange warten. Oder Du mußt mit FindFirstChangeNotification, FindNextChangeNotification die Aktivitäten an dieser Ausgabedatei kontrollieren....

    Gruß - Günthe
    Günther

    Comment


    • #3
      hast du ein beispiel dafür

      Comment


      • #4
        <html>

        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
        <meta name="ProgId" content="FrontPage.Editor.Document">
        <title>Neue Seite 1</title>
        </head>

        <body>

        <pre>
        DWORD DirChanges( LPDWORD lpdwParam )
        {
        while( TRUE )
        {
        if ( WaitForSingleObject( hWait, INFINITE ) == WAIT_OBJECT_0 )
        {
        // prüfen, welche Datei sich geändert hat und dann irgendetwas tun
        // z.B. mit PostMessage dem Formular ein WM_COMMAND schicken
        // oder mit SendMessage auf Komponenten zugreifen
        }
        FindNextChangeNotification( hWait );
        }
        return( 0 );
        }

        HANDLE hThread = NULL;
        DWORD dwID;

        void __fastcall TForm1::Button1Click(TObject *Sender)
        {
        if(hTread!=NULL)
        {
        FindCloseChangeNotification(hWait);
        TerminateProcess(hThread,0);
        hThread=NULL;
        }
        else
        {
        hThread = CreateThread( NULL,0,(LPTHREAD_START_ROUTINE)DirChanges, Handle, 0, &amp;dwID );
        hWait = FindFirstChangeNotification( &quot;c:\\temp&quot;, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE );
        }
        }

        </pre>

        <p>so ungefähr sollte es gehen. Muß natürlich noch auf Deinen speziellen Fall zugeschnitten werden. Gruß - Günther</p>

        </body>

        </html&gt
        Günther

        Comment


        • #5
          wie kann ich DOS-Shell unsichtbar starten???<br>
          <br>
          ich hab<br>
          ShellExecute(NULL, NULL, Exec.c_str(),Param.c_str() , NULL, SW_HIDE);<br>
          WinExec(Exec.c_str(),SW_HIDE);<br>
          <br>
          <br>
          Das einzige was ging war:<br>
          system(Exec.c_str());<br>
          aber das fenster wird angezeigt.<br>
          <br>
          <br>
          die shellapi.h hab ich dri

          Comment


          • #6
            Falls Exec.c_str() ein internes DOS-Kommando ist, schreib den Befehl in eine Batch-Datei und rufe diese auf.

            Versuch auf jeden Fall auch mal ob es mit SW_SHOWNORMAL funktioniert
            Günther

            Comment


            • #7
              ich hab es aus Probiert bei einigen dos Programmen klappt's und bei einigen nicht wieso??

              Comment


              • #8
                Ich bin kein Hellseher. Welche Unterschiede gibt es
                Günther

                Comment


                • #9
                  Ich hab es jetzt.<br>
                  <br>
                  in createProzess();
                  gibt es einiege parameter wo ich einen dateinamen eingeben kan für in und output er macht dann alles für mich. <br>
                  <br>
                  <br>
                  Trotzdem Danke für alles

                  Comment

                  Working...
                  X