System - Text an fremde Fenster senden



  • Ja und wie kann ich nun Zeichen an die MS-DOS-Eingabeaufforderung senden?



  • Bastel dir doch selber was, du Superformel. 😉



  • Wenn ich mich mal hier hinhängen darf 😉
    Ich wollte mich der Frage anschlissen, wie ich nun Texte an eine DOS-Eingabeaufforderung senden kann ?

    Gruß Hansss



  • Hellmaster1024 schrieb:

    einfach die funktion aufrufen und namen des fensters und den text übergeben ...

    Also ungefähr so:

    TextSend("c:\\windows\\system32\\cmd.exe","dir\n");
    


  • Danke fubar, aber er sendet nichts an die konsole bei folgendem Quellcode:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void TForm1::TextSend(AnsiString wintext, AnsiString text)
    {
      HWND hwndPrev  = GetForegroundWindow();
      HWND hwnd      = FindWindow(0, wintext.c_str());
      SetForegroundWindow(hwnd);
    
      DWORD idAttach   = GetCurrentThreadId();
      DWORD idAttachTo = GetWindowThreadProcessId(hwnd, NULL);
      if( AttachThreadInput(idAttach, idAttachTo, TRUE) == FALSE )
         ShowMessage("ERROR: AttachThreadInput\(\)");
    
      HWND hwndFocus = GetFocus();
      if(hwndFocus != FALSE)
         SendMessage(hwndFocus, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)text.c_str());
    
      if( AttachThreadInput(idAttach, idAttachTo, FALSE) == FALSE )
         ShowMessage("ERROR: AttachThreadInput\(\)");
    
      SetForegroundWindow(hwndPrev);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     TextSend("C:\\WINDOWS\\System32\\cmd.exe", "dir\n");
    }
    //---------------------------------------------------------------------------
    

    Danke und Gruß Hansss



  • Ich habe auch nur Hellmasters Funktion getestet und damit funktionierte das einwandfrei...



  • Ja, danke funktioniert mit Hellmasters Funktion, thx



  • Leider fontioniert das bei mir nicht, da

    __fastcall TForm1::TextSend(AnsiString fenster,AnsiString Text)
    

    kein Member von TForm1 ist. Ich bin noch Newbie ;).



  • Dann informiere dich am besten mal darüber wie man Klassenmethoden deklariert...

    -junix



  • Tip: schau mal nach, wo/wie die vom BCB automatisch erstellten TForm1::XYZ-Funktionen deklariert sind.


Anmelden zum Antworten