System - Text an fremde Fenster senden



  • es sei dir verziehen das du meiner funktion nicht traust ...
    ich abe sie aber getestet .. sie funktioniert einewandfrei ...
    ich habe ein programm zum archivieren von cd´s geschrieben .. und da ich für meien filme covers drucken wollte habe ich mit dieser funktion die daten an den Nero Covereditor gesendet .... ich habe es mit 400 filmen getestet ... ohne einen einzigen fehler .... das programm ist mit der TAB taste von feld zu feld gesprungen und hat die felder mit meiner funktion ausgefüllt ... alles ohne probleme oder fehler.... also 400 fach getestet!!!
    mfg
    Hellmaster1024



  • OK, ich glaub dir. 🙂



  • 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