Results 1 to 5 of 5

Thread: NotePad extern karakters toevoegen.

  1. #1

    NotePad extern karakters toevoegen.

    Hallo allemaal,

    In onderstaand code fragment wordt NotePad.Exe op Form1 gezet met behulp van Button4. Werkt prima. Ook het sluiten met Button3 werkt goed.
    Nu wil ik m.b.v van een Button een karakter in NotePad plaatsen en ook de scrollbar met een button uitvoeren. Hoe doe je dat?


    Code:
    unit unit3;
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses  Windows, ShellApi, Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
      ExtCtrls, StdCtrls, Buttons;
    
    type 
    ...
    
    ...
    Var
      Form1: TForm1;
      WPM: WINDOWPLACEMENT;
      A: HWND;
    
    implementation
    
    {$R *.lfm}
    
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      SendMessage(A,WM_DESTROY,0,0); // Sluit NotePad.exe
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    begin
        ShellExecute(Application.Handle, 'Open', 'NotePad.exe', nil, nil, SW_NORMAL);
      Sleep(100);
      A := FindWindow(nil, PChar('Naamloos - Kladblok'));
      memo1.lines.Add(IntToStr(Application.Handle)+'  '+inttostr(A));
      if A <> 0 then
      begin
        SetForegroundWindow(a);
        Windows.SetParent(a, Form1.Handle);
        SetWindowLong(A, GWL_STYLE, GetWindowLong(A, GWL_STYLE) and not WS_CAPTION);
        WPM.Length := SizeOf(WPM);
        GetWindowPlacement(A, @WPM);
        WPM.rcNormalPosition := Classes.Rect(0, 130, Form1.Width, Form1.Height);
        SetWindowPlacement(A, @WPM);
      end;
    end;

  2. #2
    Zenden van een tekst (keystrokes) naar een andere applicatie / window / handle

    Delphi Code:
    1. procedure SendKey(hWnd: THandle; KeyStroke: Word);
    2. begin
    3.   PostMessage(hWnd, WM_SETFOCUS, 0, 0);
    4.   PostMessage(hWnd, WM_KEYDOWN, KeyStroke, 0);
    5.   PostMessage(hWnd, WM_KEYUP, KeyStroke, 0);
    6. end;
    7.  
    8. procedure SendString(hWnd: THandle; S: String);
    9. var
    10.   I : Integer;
    11. begin
    12.   for I := 1 to Length(S) do SendKey(hWnd, S[I]);
    13. end;

  3. #3
    Ik wordt nu toch wel een beetje nieuwsgierig waarom je notepad in j eform wilt embedden en aansturen.
    TMemo is te simpeltjes ?

    Bart

  4. #4
    Dat klopt Bart.
    Dit is alleen voor het testen van de mogelijkheden.
    Het is de bedoeling om een eenvoudig PDF bestand te gebruiken.
    De knopjes voor de bediening zijn te klein.
    Als er een PDF-viewer component bestaat voor Lazarus zou ik dat ander kunnen oplossen.

    H.G. Frans

  5. #5
    Misschien is dit dan iets: https://forum.lazarus.freepascal.org...html#msg283271
    PDFium was al geport naar Delphi, maar in de eerste post zie je als bijlage een port naar Lazarus. (PDFium is ook gebruikt in Chrome)

    Je zou als alternatief ook een TWebbrowser kunnen gebruiken als die bestaat in Lazarus, of de fpCEF (Chromium/Chrome embedded browser) welke ook PDF kan lezen en printen etc.
    https://wiki.freepascal.org/fpCEF3
    Last edited by Reidinga; 25-Sep-21 at 15:52.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •