Ergebnis 1 bis 5 von 5
  1. #1
    W32.FunLove
    Registriert seit
    26.07.2007
    Beiträge
    135

    Standard [DELPHi] SendText an minimierte Fenster

    Heho ^^ meine letzte Frage erstmal...

    wenn ich zb nen Tastendruck an nen bestimmtest Fenster (WindowCaption) senden will... aber das so machen möchte das das Fenster dafür nicht in den Vordergrund gerufen wird, sprich ich alles was ich will weiterhin am Pc machen kann... wie krieg ich das hin?

    greetz
    -

  2. #2
    Stanley Jobson Avatar von K1ngC0bra
    Registriert seit
    26.08.2007
    Beiträge
    650

    Standard

    Ich glaube du brauchst das Handle des Fensters. Dann ist es nicht mehr schwer. Ich suche schnell Quelltext!

    //EDIT
    Erst einmal brauchst du das Handle des Fensters:
    http://dsdt.info/tipps/?id=633&search=handle,fenster

    SendMessage(Handle deines Programms, WH_Keyboard, einen Key, 0);

  3. #3
    W32.FunLove
    Registriert seit
    26.07.2007
    Beiträge
    135

    Standard

    hm und denn wenn ich das handle hab was soll ich denn machen?!...
    klingt noobich die frage ^^ nur iwie find ich immer nur möglichkeiten das so ans fenster zu senden das es im vordergrund sein muss...

    ich hatte das damals iwie so (ich weiß is schon n bisschen her und danach hab ichs nie wieder gefunden) iwie sonn ganz einfachen befehl... ich glaub man brauchte nichma ne unit dazu... halt der befehl und dann ('fenstertitel'code für die tate) und schon gings ^^ iwie ganz einfach...
    -

  4. #4
    Stanley Jobson Avatar von K1ngC0bra
    Registriert seit
    26.08.2007
    Beiträge
    650

    Standard

    Also ich habe das jetzt so gemacht:

    Code:
    function EnumWindowsProc(hWindow: hWnd; lParam: LongInt): boolean; stdcall;
    var lpBuffer: PChar;
        WindowCaptionFound: boolean;
        ClassNameFound: boolean;
    begin
      GetMem(lpBuffer, 255);
      result:=true;
      WindowCaptionFound:=false;
      ClassNameFound:=false;
      try
        if GetWindowText(hWindow, lpBuffer,255)>0 then
          if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer))>0
          then WindowCaptionFound:=true;
        if PFindWindowStruct(lParam).ClassName='' then
          ClassNameFound:=true
          else if GetClassName(hWindow, lpBuffer, 255)>0 then
            if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer))>0
            then ClassNameFound:=true;
        if (WindowCaptionFound and ClassNameFound) then begin
          PFindWindowStruct(lParam).WindowHandle:=hWindow;
          result:=false;
        end;
      finally
        FreeMem(lpBuffer, sizeof(lpBuffer^));
      end;
    end;
    
    function FindAWindow(WinCaption: string; WinClassName: string): THandle;
    var WindowInfo: TFindWindowStruct;
    begin
      with WindowInfo do begin
        caption := WinCaption;
        className := WinClassName;
        WindowHandle := 0;
        EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
        result := WindowHandle;
      end;
    end;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    var TheWindowHandle: THandle;
    begin
      TheWindowHandle:=FindAWindow('SpeedCommander 11', '');
      if TheWindowHandle=0 then
        ShowMessage('Window not found!')
      else
      PostMessage(TheWindowHandle, wm_KeyDown, VK_F1,0);
    end;

    Die Hilfe vom SpeedCommander Wird aufgerufen, sobald ich auf den Button klicke, das heißt der SpeedCommander kann auch minimiert sein. Sollte auch mit anderen Programmen funktionieren!

  5. #5
    W32.FunLove
    Registriert seit
    26.07.2007
    Beiträge
    135

    Standard

    jup ^^ stimmt danke hatte das mit sendmessage anstatt post gemacht...

    klappt auch... nur wenn ich VK_UP mache passiert nix... hättste ne idee woran das liegen könnte`?

    also im prinzip will ich die die gedrückte vorwärtstaste an nen spiel (windowmode) senden ^^
    -

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •