| Forum |  |  |  |  |  |  |  |  Uwe
 Skärke
 | | Hallo ihr lieben XProfaner, jetzt komm ich mal mit einem richtigen Hammerproblem (jedenfalls für mich) und hoffe wir (IHR) bekommen das hin, sonst ist mein ganzes Projekt im Eimer und ich heul mich tod...
 
 Also, wie ja in meiner Vorstellung bereits beschrieben bin ich son verrückter Funkamateur und will folgendes erreichen :
 
 Es gibt im Weltall eine ganze Menge von Amateurfunksatelitten, über die man Funkbetrieb machen kann, u.a auch die ISS.
 Um zu wissen wo die Dinger gerade rumfliegen, gibt es verschiedene Satelitten-Tracking-Programme, die graphisch zeigen
 wo der gesuchte Sat gerade rumturnt. Da werden praktisch u.a. die Elevation, Azimut und Entfernung aus den Keplerdaten
 errechnet und angezeigt,so dass ich dann meine Richtantennen genau auf den Sat zielen kann...
 
 Das war jetzt ein kleiner Exkurs zum Amateurfunkbetrieb über Satelitten... (hats Spass gemacht ??? )
    
 So, nun ist eins dieser Trackingprogramme mit graphischer Darstellung der Umlaufbanen der Sat. das Program Orbitron.
 Ich will nun meinem Funkgerät über die Serielle Schnittstelle mit einem Profan-PRG die aktuelle Frequenz mitteilen.
 Diese Frequenz ändert sich laufend (Dopplereffekt) und wird von ORBITRON über die DDE-Schnittstelle zur Verfügung
 gestellt.
 Meine Idee war nun, den String mit den Daten aus dem Programm Orbitron auszulesen, zu bearbeiten und dann an
 das Funkgerät weiter zu geben. Soweit bin ich gekommen, Orbitron wird gestartet, die Verbindung zu DDE ITEM
 (Tracking) wird auch aufgebaut (x% > 32 und dann war und bin ich am Ende...
 
 DDE-Test
 
 declare x%
 
 x%=@winexec(C
  rogrammeOrbitronOrbitron.exe,2) ddelink Orbitron,Tracking
 hier müsste jetzt der String TrackingData aus Orbitron ausgelesen werden...
 und dann wird dieser String weiterverabeitet...
 
 ddeterminate
 
 END
 
 Das Steuern des Funkgerätes und die Übergabe von Befehlen an das Funkgerät klappen schon ausgezeichnet,
 nur ich krieg halt die Daten nicht über den DDE-Clienten von Orbitron ausgelesen.
 Wie mir Roland im Forum schrieb, ist diese Funktion in Profan nicht implementiert (heul), allerdings sollte es über
 WINDOWS-API gehen, da steh ich allerdings auch im Wald....
 
 Jetzt kommt Alles was ich an Infos noch so habe und dann hoffe ich, dass Ihr mir irgendwie weiterhelfen könnt...
 
 1. Beschreibung DDE-Client Orbitron :
 
 --------------------------------------------------------------------------------
 Specification of DDE drivers for Orbitron                           www.stoff.pl
 --------------------------------------------------------------------------------
 
 Contents:
 1. Introduction
 2. Technical data
 3. Data format
 3.1. TrackingData item
 3.2. TrackingDataEx item
 4. My DDE Client
 5. Let Orbitron support your driver
 6. Your driver for all!
 7. WiSP DDE Client
 
 -- 1. Introduction -------------------------------------------------------------
 
 Orbitron is working as server in DDE conversations, so you can write your own
 DDE client that can e.g. control rotor and radio devices. Such programs are
 called by me Drivers.
 
 -- 2. Technical data -----------------------------------------------------------
 
 Drivers EXE file:
 Name of drivers EXE file (without .EXE) is displayed on drivers list in
 Orbitron. Drivers main window title or application title must be the same
 as EXE file name to let Orbitron check is driver already running.
 
 DDE conversation parameters:
 Source application : Orbitron
 Link topic         : Tracking
 Link items         : TrackingData
 item for communication with WiSP DDE Client with basic
 data (Satscape format)
 TrackingDataEx
 item with extended data set
 Link item is changed by Orbitron each time when current data is recalculated
 (e.g. 1s, 5s...) and when downlink/uplink frequencies or mode are changed.
 
 -- 3. Data format --------------------------------------------------------------
 
 Please note:
 - all angles are given as decimal degrees,
 - decimal separator is . (dot),
 - TrackingDataEx and TrackingData can be an EMPTY string If NO satellite
 are tracked,
 - TrackingDataEx can contain only AOS field if NO satellite are tracked.
 
 -- 3.1. TrackingData item ------------------------------------------------------
 
 Format of string:
 SNxxx AZxxx.x ELxx.x DNxxxx UPxxxx DMxxxx UMxxxx
 Fields:
 SN  - tracked satellite name (spaces converted to _)
 AZ  - azimuth in range form 0.0 to 360.0
 EL  - elevation in range from -90.0 to 90.0
 please note possibility of negative values
 DN  - downlink frequency with doppler, [Hz] in range from 0 to N
 UP  - uplink frequency with doppler, [Hz] in range from 0 to N
 DM  - downlink mode (optional field)
 UM  - uplink mode (optional field)
 Examples:
 SNISS_ZARYA AZ182.1 EL36.3 DN145800000 UP145800000 UMFM-N
 SNISS_ZARYA AZ180.3 EL-10.1 DN145800000 UP145800000
 
 -- 3.2. TrackingDataEx item ----------------------------------------------------
 
 Format of string:
 SNxxx AZxxx.x ELxx.x DNxxxx UPxxxx DMxxxx UMxxxx AOSxxx
 Fields:
 SN  - tracked satellite name in quotes
 RA  - range [km]
 RR  - range rate [km/s]
 LO  - longitude in range from -180.0000 to 180.000 (W to E)
 LA  - latitude in range from -90.0000 to 90.000 (S to N)
 AL  - altitude [km]
 TU  - UTC time (Format: YYYYMMDDhhmmss)
 TL  - local time (Format: YYYYMMDDhhmmss)
 AOS - AOS notification for satellite xxx (name in quotes; AOS notification
 is provided for all tracked objects, not only for active one)
 Other fields same as in TrackingData item.
 Examples:
 SNISS ZARYA AZ182.1 EL36.3 DN145800000 UP145800000 (...)
 SNISS ZARYA AZ182.1 EL36.3 DN145800000 UP145800000 (...) AOSHST
 AOSHST
 
 -- 4. My DDE Client ------------------------------------------------------------
 
 My DDE Client is an example of users custom driver for Orbitron with full
 source code in Delphi 5. It should helps you to write your own driver for rotor
 or radio hardware. Further information you will find in MAIN.PAS file.
 
 -- 5. Let Orbitron support your driver -----------------------------------------
 
 Please set specific name for your driver program, e.g. SuperRotor.exe. Then you
 can edit {Orbitron}ConfigSetup.cfg file (*) by adding line to the [Drivers]
 section (please create it if doesnt exist) with your driver information.
 Example:
 [Drivers]
 SuperRotor=d:My filesSuperRotor.exe
 SuperRotorTwo=
 Next time you run Orbitron, your driver will be listed on Rotor/Radio panel.
 You can launch it there. If no path specified, Orbitron will ask you about your
 drivers location (drivers located in {Orbitron} directory will be found
 automatically).
 
 *) {Orbitron} - replace it with directory where Orbitron is installed to,
 e.g. c
  rogram FilesOrbitron. This path is available in Windows registry:
 HKEY_CURRENT_USERSoftwareStoffOrbitronPath
 WARNING: User can define his own location where the Config directory is.
 This value is stored in registry:
 HKEY_CURRENT_USERSoftwareStoffOrbitronUserPath
 So, if this value is specified, you have to use it instead of previous one.
 HINT: You can check are files definied by:
 HKEY_CURRENT_USERSoftwareStoffOrbitronPath + ConfigSetup.cfg
 HKEY_CURRENT_USERSoftwareStoffOrbitronUserPath + ConfigSetup.cfg
 exists and then add your config line to both.
 
 -- 6. Your driver for all! -----------------------------------------------------
 
 Have you already done your driver? Please, send me it. Ill put it on Orbitron
 website to share it with all people with same hardware as yours.
 
 -- 7. WiSP DDE Client ----------------------------------------------------------
 
 WiSP DDE Client is an application written by Fernando Mederos, CX6DD and
 available on [...]
  It works as DDE Client and support many kinds of hardware and software. To use it with Orbitron,
 following settings are required:
 Receive DDE from   : Orbitron (or Satscape)
 Source application : Orbitron
 Link Topic         : Tracking
 Link Item          : TrackingData
 Query Interval     : 1 sec.
 Orbitron will set these values when you launch WiSP DDE Client from
 Rotor/Radio panel.
 
 -- Last updated 2005.02.26 -----------------------------------------------------
 
 und zweitens ein Beispielprogram in PASCAL :
 
 {
 My DDE Client is an example of users custom driver for Orbitron.
 version 1.02, released 2003.11.07
 1.03, released 2004.09.04
 1.04, released 2004.09.10
 1.05, released 2005.02.26
 (C) 2003-2005 by Sebastian Stoff
 sebastian@stoff.pl
 www.stoff.pl
 
 You can use this source to receive tracking data from Orbitron and send it
 to your rotor/radio hardware via COM/LPT/USB interfaces. Other purposes are
 also allowed, depending on your invention...
 To change this source code into the driver, you must write code specific to
 hardware you have in UpdateRotorAndRadio procedure. Please find it
 on the end of this file.
 
 Detailed information are available in READ_ME.TXT file.
 
 CHANGING, COMPILING AND FREE DISTRIBUTING OF THIS PROGRAM/SOURCES IS
 ALLOWED FOR ***ORBITRON*** RELATED PURPOSES WITHOUT MY PERMISSION.
 }
 
 unit main;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 DdeMan, StdCtrls, ExtCtrls, Buttons, Registry, ComCtrls;
 
 type
 TSatData = record
 name        : String;       //satellite name
 azm,elv     : Double;       //observation angles
 upf,dnf     : Double;       //uplink and downlink frequencies (with doppler shift)
 upm,dnm     : String;       //uplink and downlink modes
 end;
 TFMain = class(TForm)
 Tracking: TDdeClientConv;
 TrackingDataEx: TDdeClientItem;
 Label1: TLabel;
 l_st: TLabel;
 Label3: TLabel;
 l_dd: TLabel;
 Label5: TLabel;
 Label6: TLabel;
 Label7: TLabel;
 Label8: TLabel;
 Label9: TLabel;
 Label10: TLabel;
 Bevel1: TBevel;
 l_az: TLabel;
 l_el: TLabel;
 l_uf: TLabel;
 l_df: TLabel;
 l_um: TLabel;
 l_dm: TLabel;
 Bevel2: TBevel;
 l_na: TLabel;
 Label4: TLabel;
 SpeedButton1: TSpeedButton;
 l_aos: TLabel;
 Label2: TLabel;
 procedure TrackingOpen(Sender: TObject);
 procedure TrackingClose(Sender: TObject);
 procedure TrackingDataExChange(Sender: TObject);
 procedure SpeedButton1Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure l_ddClick(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 procedure ParseString(s: String; var data: TSatData);
 procedure PrintData(data: TSatData);
 procedure UpdateRotorAndRadio(data: TSatData);
 end;
 
 var
 FMain   : TFMain;
 SatData : TSatData;
 Reg     : TRegistry;
 PathP   : String;
 AOS     : String;
 
 implementation
 
 {$R *.DFM}
 
 procedure Replace(var s: String; subs1,subs2: String);
 var i : Integer;
 begin
 if subs1= then Exit;
 if subs1=subs2 then Exit;
 i:=Pos(subs1,s);
 while i>0 do begin
 Delete(s,i,Length(subs1));
 Insert(subs2,s,i);
 i:=Pos(subs1,s);
 end;
 end;
 
 function FieldToReal(s: String):Real;
 var c : Integer;
 begin
 val(s,result,c);
 if c>0 then result:=0;
 end;
 
 function GetField(source,field: String):String;
 var p1,p2  : Integer;
 quotes : Boolean;
 s2     : String;
 
 function FindField(source,field: String):Integer;
 var i      : Integer;
 quotes : Boolean;
 begin
 quotes:=False;
 for i:=1 to Length(source) do begin
 if source= then begin
 quotes:=not quotes;
 Continue;
 end;
 
 if quotes then source:=-;
 end;
 result:=pos(field,source);
 end;
 
 begin
 source:= +source;
 field:=UpperCase(field);
 field:= +field;
 p1:=FindField(source,field);
 if p1=0 then begin
 result:=;
 Exit;
 end;
 
 s2:=;
 p2:=p1+Length(field);
 quotes:=False;
 while p2<=Length(source) do begin
 if source[p2]= then begin
 quotes:=not quotes;
 Inc(p2);
 Continue;
 end;
 
 if (source[p2]= ) and not quotes then Break;
 
 s2:=s2+source[p2];
 Inc(p2);
 end;
 result:=s2;
 end;
 
 procedure TFMain.ParseString(s: String; var data: TSatData);
 begin
 if s= then with data do begin
 name:=;
 azm:=0;
 elv:=0;
 upf:=0;
 dnf:=0;
 upm:=;
 dnm:=;
 AOS:=;
 Exit;
 end;
 
 s:=UpperCase(s);
 Replace(s,,,.);
 with data do begin
 name:=GetField(s,SN);
 azm:=FieldToReal(GetField(s,AZ));
 elv:=FieldToReal(GetField(s,EL));
 upf:=FieldToReal(GetField(s,UP));
 dnf:=FieldToReal(GetField(s,DN));
 upm:=GetField(s,UM);
 dnm:=GetField(s,DM);
 AOS:=GetField(s,AOS);
 end;
 end;
 
 procedure TFMain.PrintData(data: TSatData);
 begin
 with data do begin
 l_na.Caption:=name;
 l_az.Caption:=FloatToStrF(azm,ffFixed,4,1);
 l_el.Caption:=FloatToStrF(elv,ffFixed,4,1);
 l_uf.Caption:=FloatToStrF(upf,ffFixed,12,0)+ Hz;
 l_df.Caption:=FloatToStrF(dnf,ffFixed,12,0)+ Hz;
 l_um.Caption:=upm;
 l_dm.Caption:=dnm;
 end;
 if AOS<> then l_aos.Caption:=AOS (+AOS+) else l_aos.Caption:=None;
 end;
 
 procedure TFMain.SpeedButton1Click(Sender: TObject);
 begin
 FMain.Close;
 end;
 
 procedure TFMain.TrackingOpen(Sender: TObject);
 begin
 l_dd.Caption:=Opened;
 end;
 
 procedure TFMain.TrackingClose(Sender: TObject);
 begin
 l_dd.Caption:=Closed;
 l_st.Caption:=No data;
 ParseString(,SatData);
 PrintData(SatData);
 end;
 
 procedure TFMain.TrackingDataExChange(Sender: TObject);
 var s : String;
 begin
 s:=Trim(TrackingDataEx.Text);
 if s= then l_st.Caption:=No data else
 l_st.Caption:=s;
 ParseString(s,SatData);
 
 PrintData(SatData);
 UpdateRotorAndRadio(SatData);
 end;
 
 procedure TFMain.FormCreate(Sender: TObject);
 begin
 ParseString(,SatData);
 PrintData(SatData);
 
 PathP:=ExtractFileDir(ParamStr(0));
 if PathP[length(PathP)]<> then PathP:=PathP+;
 ChDir(PathP);
 
 If not FileExists(PathP+Orbitron.exe) then begin
 Reg:=TRegistry.Create;
 try
 if Reg.OpenKey(SoftwareStoffOrbitron,True) then
 Tracking.ServiceApplication:=Reg.ReadString(Path)+orbitron;
 finally
 Reg.CloseKey;
 Reg.Free;
 end;
 end;
 Tracking.OpenLink;
 end;
 
 procedure TFMain.l_ddClick(Sender: TObject);
 begin
 Tracking.OpenLink;
 end;
 
 procedure TFMain.UpdateRotorAndRadio(data: TSatData);
 begin
 {
 Please write support for your rotor/radio hardware here.
 
 Use DATA record as source of current tracking data sended by
 Orbitron.
 
 This procedure will be called by DDE engine after Orbitron made
 changes into the tracking data (each 1s, 5s, 10s or so).
 }
 end;
 
 end.
 
 soooooo, jetzt werde ich warscheinlich schlecht schlafen und alle zwei Minuten reinschauen, wass Ihr so aus diesem
 Wust so macht...
  
 PS.: wer sich Orbitron mal anschauen möchte, hier die Adresse zum runterladen :
 www.stoff.pl
 
 LG
 Uwe
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Den String, den du auslesen willst. Steht der irgendwo in einem Control? Z.B. einer Editbox? Mach bitte mal einen Screenshot, wo dieser String zu sehen ist.
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 Skärke
 | | Hallo Frank, eine mögliche Abbildung ist die : es geht um Azimut und Elevation und um Dopplerfrequenz up und down...
 
 eins Screenshot von einer in Delphi geschriebenen DDE-Anwendung hab ich auch mal reingelegt, da sieht man den gesamten String wie er eben unter TrackingData von Orbitron bereitgestellt wird (oben, und der ändert sich jede sekunde...)
 
 LG
 UWE
 | 
 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Ist doch prima. Wenn irgendwo der String in einem Windows-Control steht kannst du ihn auslesen. Dein Programm könnte den Controlhandle ermitteln und den Text dann auslesen. | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 Skärke
 | | ... schönen guten Morgen Frank, ich hoffe Du bist  Sonntagsfrühaufsteher ... na ja, ist ja klasse wenn Du es prima findest, aber da ich ja blutiger Anfänger bin, steh ich noch im Regen, mach doch mal nen Vorschlag wie ich das angehen könnte, wie Du an der Uhrzeit sehen kannst, kann ich nicht schlafen...
 
 HELP !!!
  
 LG, Uwe
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 Skärke
 | | ... evtl. hilft Dir das noch weiter bei der Lösung meines Problemes !!?? 
 das zeigt Dein WhichLibraries beim Start von Orbitron an :
 
 c:programmeorbitronorbitron.exe (WININET.DLL)
 c:programmeorbitronorbitron.exe (RASAPI32.DLL)
 c:programmeorbitronorbitron.exe (RASAPI32.DLL)
 c:programmeorbitronorbitron.exe (SHELL32.DLL)
 c:programmeorbitronorbitron.exe (USERENV.DLL)
 c:programmeorbitronorbitron.exe (SENSAPI.DLL)
 c:programmeorbitronorbitron.exe (RSAENH.DLL)
 c:programmeorbitronorbitron.exe (C:WINDOWSSYSTEM32MSWSOCK.DLL)
 c:programmeorbitronorbitron.exe (RASADHLP.DLL)
 c:programmeorbitronorbitron.exe (URLMON.DLL)
 c:programmeorbitronorbitron.exe (WININET.DLL)
 c:programmeorbitronorbitron.exe (C:WINDOWSSYSTEM32MSWSOCK.DLL)
 c:programmeorbitronorbitron.exe (DNSAPI.DLL)
 c:programmeorbitronorbitron.exe (IPHLPAPI.DLL)
 c:programmeorbitronorbitron.exe (WS2_32.DLL)
 
 ..................LG.........................Uwe...............
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Mit der Dll-Liste ist nichts anzufangen. 
 Starte mal meinen kleinen Code und gehe mit dem Mauszeiger über den String in deinem Programm. Wird der Text in meinem Fenster bei Fenstertext angezeigt? Wenn ja ist das schon die halbe Miete...
  KompilierenMarkierenSeparieren
 (W) 2003 Frank Abbing
Declare sx&,sy&,bereich#,be#,erg&,erg2&,x&,y&,text$
Dim be#,8
Dim bereich#,1024
DEF GetCursorPos(1) !USER32,GetCursorPos
DEF WindowFromPoint(2) !USER32,WindowFromPoint
DEF ChildWindowFromPoint(3) !USER32,ChildWindowFromPoint
Def GetSysColor(1) !USER32,GetSysColor
Def ScreenToClient(2) !USER32,ScreenToClient
Def GetClassName(3) !USER32,GetClassNameA
Def GetWindowText(3) !USER32,GetWindowTextA
DEF NewWindowPos(7) !USER32,SetWindowPos
DEF AllocConsole(0) !KERNEL32,AllocConsole
Proc DText
    Parameters xx&,yy&,ttext$
    Drawtext xx&,yy&,ttext$
EndProc
Windowtitle Fensterhandles...
windowstyle 26
window (%maxx/2-112),(%maxy/2-80)-224,164
settruecolor 1
cls GetSysColor(15)
NewWindowPos(%hwnd,-1,0,0,0,0,$13)
Usefont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
whilenot %mousepressed=2
    Sleep 10
    GetCursorPos(be#)
    x&=Long(be#,0)
    y&=Long(be#,4)
    erg&=@WindowFromPoint(x&,y&)
    If erg&<>0
        ScreenToClient(erg&,be#)
        x&=Long(be#,0)
        y&=Long(be#,4)
        erg2&=@ChildWindowFromPoint(erg&,x&,y&)
    EndIf
    TextColor 0,GetSysColor(15)
    DText 8,8, Maus Position X = +Str$(x&)+
    DText 8,21,Maus Position Y = +Str$(y&)+
    DText 8,38,Handle eigenes Fenster = $+@Hex$(%hwnd)+
    DText 8,55,Handle unter Mauszeiger = $+@Hex$(erg&)+
    DText 8,68,Handle unter Mauszeiger (Child) = $+@Hex$(erg2&)+
    GetClassname(erg&,bereich#,128)Declare sx&,sy&,text$,x&,y&,bereich#
    text$=String$(bereich#,0)
    DText 8,85,Klassenname = +text$+
    GetWindowText(erg&,bereich#,128)
    text$=String$(bereich#,0)
    DText 8,98,Fenstername = +text$+
    @SendMessage(erg&,13,128,bereich#)
    text$=String$(bereich#,0)
    DText 8,111,Fenstertext = +text$+
wend
Dispose be#
Dispose bereich#
end
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 Skärke
 | | hallo Frank 
 
  du bist da, ist ja klasse, hast aber ganz schön lange geschlafen ... 
 aber eben hab ich gemerkt, da is was da *freu*
 
 so nun muss ich erst mal lesen was Du erfunden hast...
 
 okay, das verswuch ich mal.. und Funke dich an ...
 
 LG,  Uwe
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 Skärke
 | | Hi Frank, 
 
  Du solltest den XProfan-Community-Nobel-Preis bekommen... 
 Also zur Auswertung :
 
 Handle unter Mauszeiger unde Mauszeiger (Child) ist immer gleich, aber bei jedem
 Start von Orbitron anders (z.B. $206DC)
 
 Bei Klassenname erscheint bei den mich interessierenden Boxen immer TEdit
 Bei Fenstername erscheint nie was, nix, niente, nada
 
 ... und das gei.... ist, bei Fenstertext steht genau das was ich brauche, Azimut Elevation,Frequenz ...
 
 
  jetzt muss ich nur noch versuchen zu verstehen wadduda gemacht hast... 
 LG, Uwe
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Hi. 
 
 
 Handle unter Mauszeiger unde Mauszeiger (Child) ist immer gleich, aber bei jedemStart von Orbitron anders (z.B. $206DC)
 
 Ja, das ist so auch logisch.
 
 
 
 Bei Klassenname erscheint bei den mich interessierenden Boxen immer TEdit 
 Ok, kein Windows-übliches Editfeld...
 
 
 
 Bei Fenstername erscheint nie was, nix, niente, nada 
 Auch logisch.
 
 
 
 ... und das gei.... ist, bei Fenstertext steht genau das was ich brauche, Azimut Elevation,Frequenz ... 
 Bingo! Somit kannst du dein Vorhaben ausführen.
  
 
 
  jetzt muss ich nur noch versuchen zu verstehen wadduda gemacht hast... 
 Du mußt jetzt überlegen, ob dein Orbitron-Fenster immer am selbem Platz steht und immer im Vordergrund. Wenn ja, kannst feste Positionsangaben verwenden anstelle von Mauskoordinaten.
 Wenn nein, musst du anders vorgehen. Du mußt Orbitron.exe erkennen (über Prozesshandle oder Windowname), das betreffende Control mit dem Text lokalisieren (Fenstertext und Klassenname) und dann auslesen. Das ist die Methode, die ich verwenden würde.
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 Skärke
 | | okay, ... 
 die zweite Variante würde mir besser gefallen, allerdings brauch ich da noch mal Deine Hilfe
  
 weil ich denke, dass bei verschiedenen Bildschirmauflösungen auch die Positionsdaten unterschiedlich sind und möglicherweise das Orbitron auch mal nicht im Vollbildmodus läuft...
 
 
  ... und immer daran denken, Du hast es hier mit einem Vorschulkind zu tun... 
 PS: und danke, hoffe ich habe Dir nicht den Sonntag vermasselt
  | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | 
  ... und immer daran denken, Du hast es hier mit einem Vorschulkind zu tun... 
 Dafür ist das Thema eigentlich zu schwierig. Ich kann mir denken, dass du dieses Programm benötigst. Besser wäre aber, mit einfacheren Dingen zu beginnen...
 
 Auf den Screenshots meine ich zu erkennen zu erkennen, dass sich die von dir benötigten Informationen in mehreren Controls verstecken. Ist das richtig?
 Ich müßte genau wissen, welche Information(en) du ständig benötigst.
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 | 
 
 Antworten| Themenoptionen | 16.111 Betrachtungen | 
 ThemeninformationenDieses Thema hat 2 Teilnehmer: |