Announcement

Collapse
No announcement yet.

Spezielle Botschaften anderer Anwendungen empfangen

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

  • Spezielle Botschaften anderer Anwendungen empfangen

    Mit Winsight kann ich sehen was für Botschaften eintreffen, deshalb muss es doch möglich sein Botschaften anderer Anwendung abzufangen.
    Ich muss ganz speziell 3 verschiedene Buttonclicks abfangen.
    Was noch praktischer wäre diese 3 Buttonclicks einer externen Anwendung zu simulieren also spezielle Botschaften an eine andere Anwendung zu senden.
    Nicht zu vergessen die andere Anwendung stammt nicht von mir ich habe keinen Sourcecode von ihr!

    Wenn ihr mir dabei helfen könntet dann würde mir das superviel bringen.

    Danke schon mal Flo

  • #2
    Wie heißt die andere Anwendung ? Welche Botschaften willst Du senden ? Kann man die Funktionen in dem Programm über eine Tastenkombination anwählen ( z.B. ALT X )
    Günther

    Comment


    • #3
      Das Programm heißt VidCap. Seine Aufgabe es ist über eine Videokarte
      aufzunehmen. Leider kann dieses Programm nicht abspielen und vorallem nicht in realtime. Daher wollte ich zuerst ein ganz neues Programm schreiben. Allerdings ist mir dann die Idee gekommen das man ja die Funktionen des Programms gezielt nutzen kann indem man es Fernsteuert.
      Also die Buttons Start,Stop und Pause automatisch bedient oder erkennt wann sie gedrückt werden.

      Ja es gibt eine Alt Kombinationen um den Dialog, in welchem die Buttons enthalten sind, aufzurufen und dann für die Buttons selber.
      Allerdings muss das Programm und der Dialog dazu immer den Focus haben. Und das sollte dann auch automatisch geschehen. Es ist wichtig das es einwandfrei funktioniert immerhin ist es für eine Diplomarbeit in Elektrotechnik wenn auch nicht für meine.

      Aber trotzdem wäre das sicher eine Notlösung, wenn es wirklich keine besseren Lösungen gibt. Also wie überreiche ich einem Fenster den Fokus und wie Sende ich Tastenkombination.

      Überhaupt habe ich wirklich Grund mich bei ihnen für ihre langanhaltende Hilfsbereitschaft zu bedanken.

      MFG Fl

      Comment


      • #4
        Hallo Flo, der Classname des Fensters ist bekannt ? Oder, ist der Fenstertitel immer der Gleiche ? Oder, steht im Fenstertitel zusätzlich noch der Name der aktuell bearbeiteten Datei ?

        Fenster suchen mit FindWindows oder EnumWindows, jenachdem wie die Fragen oben beantwortet werden. Focus übergeben mit BringWindowTooTop. Tasten senden mit keybd_event. Versuch schon mal, ich werd erst heut Nachmittag oder morgen früh Zeit haben.

        Gruß - Günthe
        Günther

        Comment


        • #5
          <html>

          <head>
          <meta http-equiv="Content-Language" content="de">
          <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>

          <p>Hallo *Flo*,</p>
          <p>Erst einmal verstehe ich nicht: <i>&quot;Leider kann das Programm nicht
          abspielen...&quot;. </i>Ein Capture Programm muß das auch nicht unbedingt
          können. Dazu gibt es den Mediaplayer &amp; Co. Die geplante Fernsteuerung soll
          aber die<b> Aufnahme </b>steuern, nicht eine dann doch über Ecken
          funktionierende Wiedergabe !?&nbsp;</p>
          <p>Bevor wir uns aber jetzt an die Programmierung heranmachen, schau Dir erst
          einmal auf <a href="http://www.nickles.de">www.nickles.de</a> ein paar Seiten
          an. Dort soll in einem <b>&quot;Projekt 2001&quot;</b> der PC die geamte
          Unterhaltungselektronik im Haushalt übernehmen. Bisher wurde dort mit einem
          VirtualDup-Workshop und weiteren ausführlichen Artikeln ein digitaler MPEG4
          Videorecorder vorgestellt, inclusive zeitgesteuerter Videoaufnahme. ( mit
          Windows Scripting Host und Sendkey - Befehlen )</p>
          <p>Was ist VidCap ? FreeWare, ShareWare oder teuer gekaufte Software ? Wie teuer
          ? Kann man damit auch AVI-Dateien von einem Camcorder capturen ? Welches
          Dateiformat erhält man ? Mit VirtualDub habe ich dabei einen Reinfall erlebt.
          Da ich (noch) kein Fernsehsignal in meinem Arbeitszimmer habe, habe ich auch
          noch keine Videokarte. Nur eine Firewire-Schnittstelle für meinen Camcorder.</p>
          <p>Im folgenden ein Programmfragment, mit dem ich den Tastendruck Funktionstaste
          F12 an ein CAD-Programm sende, schon ein wenig auf Deinen Anwendungsfall
          abgeändert. Was ich<b> nicht</b> weiß: Wie man die ALT-Taste simuliert, und
          wie sich das Programm verhält, wenn die Eingabe nicht an das MainWindow sondern
          an das Dialogfenster gehen soll. Da hilft nur ausprobieren.</p>
          <pre>

          HWND VidCapHwnd;

          BOOL CALLBACK MyEnumWindowsProc(HWND hwnd,LPARAM lParam)
          {
          &nbsp;&nbsp; BOOL ret=true;
          &nbsp;&nbsp; LPSTR Text=new char[80];
          &nbsp;&nbsp; GetWindowText(hwnd,Text,78);
          &nbsp;&nbsp; if(strstr(Text,&quot;VidCap&quot!=NULL)
          &nbsp;&nbsp; {
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VidCapHwnd=hwnd;
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret=false;
          &nbsp;&nbsp; }
          &nbsp;&nbsp; else VidCapHwnd=NULL;
          &nbsp;&nbsp; delete Text;
          &nbsp;&nbsp; return ret;
          }

          void __fastcall TForm1::ButtonClick(TObject *Sender)
          {
          &nbsp;&nbsp; EnumDesktopWindows(NULL,(FARPROC)MyEnumWindowsProc ,(LPARAM)0L);
          &nbsp;&nbsp; if(VidCapHwnd==NULL)
          &nbsp;&nbsp; {
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShowMessage(&quot;VidCap wurde noch nicht gestartet&quot;
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;
          &nbsp;&nbsp; }
          &nbsp;&nbsp; if(IsIconic(VidCapHwnd)) ShowWindow(VidCapHwnd,SW_SHOWNORMAL);
          &nbsp;&nbsp; BringWindowToTop(VidCapHwnd);
          &nbsp;&nbsp; keybd_event(VK_F12,0,0,0);
          &nbsp;&nbsp; keybd_event(VK_F12,0,KEYEVENTF_KEYUP,0);
          }
          </pre>

          Gruß - Günther
          <p>&nbsp;</p>
          <p>&nbsp;</p>

          </body>

          </html&gt
          Günther

          Comment


          • #6
            VidCap stammt von Microsoft und ist soviel wie ich weiß Freeware. Eine andere Software ist mir nicht bekannt oder arbeitet für die spezielle teure(1400DM)Karte wohl auch nicht. VidCap speichert im AVI-Format. Richtig es soll die Aufnahme steuern und zwar so das das Video parallel zur Aufnahme abgespielt werden kann, durch drücken von Play,Stop und Pause im Wiedergabeprogramm soll VidCap mit stoppen und aufnehmen. Das Abspielen wollte ich lösen indem ich den
            Windows Mediaplayer via OLE lade. Das muss ich mir auch noch mal genauer anschauen wie das geht. Also das mit dem Dialogfenster würde funktionieren, da dieses nach Aufruf sofort den Fokus hat. Mein Problem wo ich gerade am suchen bin ist wie maximiere ich das Mainfenster? Alleine durch setzten des Fokuses geschieht dies nicht? Somit hat keybd_event keinen Erfolg.

            Gruß Fl

            Comment


            • #7
              In der Zeile ShowWindow mußt Du SW_SHOWMAXIMIZED statt SW_SHOWNORMAL angeben, um das Fenster zu maximieren. Aber ich glaube, das willst Du gar nicht, denn Du willst ja auch noch das Video wiedergeben. Mit Kombination von ShowWindow und BringWindowToTop sollte keybd_event immer funktionieren
              Günther

              Comment

              Working...
              X