Avatar billede dl Nybegynder
13. august 2003 - 12:14 Der er 24 kommentarer og
1 løsning

Køre musen over et windows eller tekst og få result i caption

jeg søger en kode, hvis jeg køre musen over noget tekst på skærmen, så skal programmet finde tekst og skrive det i det edit felt på min formen...

// dl

ps. håber i kan hjælpe ?
Avatar billede kustoden Nybegynder
13. august 2003 - 12:25 #1
Den kommer du til at uddybe lidt.

Hvordan står teksten der?. Er det i en TEdit, TLabel, TMemo, noget grafikbaseret tekst, du tegner på canvas, eller alle muligheder, eller...

Det er ret afgørende
Avatar billede dl Nybegynder
13. august 2003 - 12:27 #2
hvis jeg har en edit på min form ... og jeg køre musen henover et explorer vindue med "Hej med dig"  så skal program kopier  "hej med dig" hen i edit på min form..

//dl

ps. var det bedre ...
Avatar billede kustoden Nybegynder
13. august 2003 - 13:07 #3
Kender du noget til hooks og callback?
Avatar billede dl Nybegynder
13. august 2003 - 13:09 #4
nope... her ingen ide om hvordan man gør ... jeg havde engang sådan en kode ... men har smit den væk ved et uheld..

Denne kode virkede ikke til adgangskoder i winNT, win2000, 2002  osv...

//dl
Avatar billede dl Nybegynder
13. august 2003 - 13:12 #5
kode kunne ikke vise det der var under "*" og det er ok
Avatar billede kustoden Nybegynder
13. august 2003 - 13:15 #6
Så trækker jeg mig ud. Sorry :-(

Vi skal helt ned i maven på Windows API'et, og det har jeg ikke tid til lige nu, hvis du ikke er med et langt stykke af vejen.

Jeg er ked af det, men jeg kan ikke lige nu.
Avatar billede dl Nybegynder
13. august 2003 - 13:22 #7
Det er ok, men har du noget kode så ... eller link til noget..

//dl
Avatar billede kustoden Nybegynder
13. august 2003 - 13:24 #8
Nej desværre. Havde jeg haft det, så var det jo ikke så besværligt.
Avatar billede dl Nybegynder
13. august 2003 - 13:25 #9
ok, men så et tip... ???
Avatar billede kustoden Nybegynder
13. august 2003 - 13:50 #10
OK, du installerer et hook, gerne i et selvstændigt dll, der fanger musens bevægelse før Windows behandler det. Vær omhyggelig med at kode det, fejl får de underligste følger ifm. hooks, og det er vigtigt at du får sendt event'et videre til eventuelle andre i hook-køen.

I din hook-funktion (som dll'et naturligvis eksporterer), spørger du så Windows, hvilket program, der er lige nede under musen, og så poster du en message til dit program, hvor du forinden har sørget for, at programmet forstår og behandler din message.

Du kan læse mere om hooks i MSDN Library. Sæt du bare 10 liter kaffe over og gå i gang. :-)
Avatar billede dl Nybegynder
13. august 2003 - 15:39 #11
k, takker ... men hjælp ikke så meget ...
Men laver sp står åben for andre der vil svar.

//dl
Avatar billede Slettet bruger
13. august 2003 - 15:59 #12
Avatar billede dl Nybegynder
13. august 2003 - 16:17 #13
Takker det er hvad jeg kan bruge. Men hvorfor kan jeg ikke åbne den i Delphi 3 ?
Avatar billede Slettet bruger
13. august 2003 - 16:46 #14
Ved det ikke, vilke fejl kommer der??

Ellers er koden:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Timer1: TTimer;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ChildWindowUnderCursor: HWND;
var
  Window, LastWindow: HWND;
  pt, clientpt: TPoint;
begin
Result := 0;
GetCursorPos( pt );
Window := WindowFromPoint( pt );
if Window = 0 then Exit;
repeat
LastWindow := Window;
clientpt := Pt;
Windows.ScreenToClient( LastWindow, clientpt );
Window := ChildwindowFromPointEx( LastWindow, clientpt, CWP_SKIPINVISIBLE );
until Window = LastWindow;
Result := Window;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Text: array [0..512] of char;
begin
SendMessage(ChildWindowUnderCursor , WM_GETTEXT, 512, integer(@Text));
Edit1.Text := Text;
getclassname( ChildWindowUnderCursor, Text, 512 );
Edit2.Text := Text;
end;

end.
Avatar billede athlon-pascal Juniormester
13. august 2003 - 16:57 #15
Det er vel formen der ikke er binær...
Avatar billede Slettet bruger
13. august 2003 - 17:06 #16
Øhh.. det ved jeg ikke om den er :S

Men unit1.dfm ser sådan ud:

object Form1: TForm1
  Left = 334
  Top = 273
  Width = 236
  Height = 108
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 8
    Top = 16
    Width = 39
    Height = 13
    Caption = 'Caption:'
  end
  object Label2: TLabel
    Left = 8
    Top = 40
    Width = 56
    Height = 13
    Caption = 'ClassName:'
  end
  object Edit1: TEdit
    Left = 72
    Top = 16
    Width = 121
    Height = 21
    TabOrder = 0
    Text = 'Edit1'
  end
  object Edit2: TEdit
    Left = 72
    Top = 40
    Width = 121
    Height = 21
    TabOrder = 1
    Text = 'Edit2'
  end
  object Timer1: TTimer
    Interval = 20
    OnTimer = Timer1Timer
    Left = 144
    Top = 40
  end
end
Avatar billede dl Nybegynder
13. august 2003 - 21:08 #17
Den fejl jeg for er : Error creating form: Invalid stream format.

//dl
Avatar billede Slettet bruger
13. august 2003 - 21:13 #18
Prøv at lave en project selv og put koden ind.
Avatar billede dl Nybegynder
13. august 2003 - 21:20 #19
Takker, det virker jo så...
Avatar billede Slettet bruger
13. august 2003 - 21:21 #20
:-)
Avatar billede athlon-pascal Juniormester
13. august 2003 - 23:13 #21
"Det er vel formen der ikke er binær..."
"Den fejl jeg for er : Error creating form: Invalid stream format."
Jeg havde ret :-)
Avatar billede dl Nybegynder
14. august 2003 - 11:31 #22
hvordan laver man det om til en binær form ?
Avatar billede athlon-pascal Juniormester
14. august 2003 - 11:36 #23
Gem følgende som en bat-fil i samme mappe som projektet (og din form-fil):
@echo Converts all Delphi 5/6 forms (text) in this forlder to Delphi 3/4 binary forms.
@echo.
@echo Note: if you get an error: 'Bad command ..' edit the bat-file.
rename *.dfm *.~cf

@rem Add the full path to convert.exe in the line below if you get an error: 'Bad command....'
@rem Then rerun the bat-file.
@rem ------------------------------------------------------------------------------------------------------
c:\progra~1\borland\delphi4\bin\convert.exe *.~cf
@rem ------------------------------------------------------------------------------------------------------


@pause
Avatar billede dl Nybegynder
14. august 2003 - 11:37 #24
k,takker
Avatar billede athlon-pascal Juniormester
14. august 2003 - 11:37 #25
Du skal huske at lave
c:\progra~1\borland\delphi4\bin\convert.exe *.~cf
om til din Delphi-mappe, f.eks.
c:\progra~1\borland\delphi3\bin\convert.exe *.~cf

Dernæst kører du bat-filen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester