Autor Beitrag
bolli
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 17.09.03 14:10 
Hi, ich will ein programm schreiben, mit dem ich aus meinen Editfenster in das Programm(Ultima Online) schreiben kann.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure StringToUO(zeile: string);
var hUO: THandle;
i: byte;
begin
hUO := Libc.system('Ultima Online');
if hUO <> 0 then
begin
for i := 1 to Length(zeile) do 
begin
Sendmessage(hUO,WM_CHAR,Ord(zeile[i]),0);
end;
Sendmessage(hUO,WM_CHAR,13,0);
end
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
StringToUO('Edit1.Edit');
end;


unter windows würde es gehen, aber unter Linux gibt es keine Sendmessage, und WM_CHAR erkennt er auch nicht. Was muss ich da eingeben?

FindWindow hab ich durch libc.system ersetzt das geht doch oder?

Wäre nett wenn mir einer weiterhelfen könnte.

<==noob

Moderiert von user profile iconUGrohne: Delphi-Tags eingefügt und Code gekürzt
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 17.09.03 14:53 
Zitat:
Libc.system('Ultima Online');

Damit startest du ein Programm "Ultima" mit dem Parameter "Online".

Zitat:
Sendmessage(hUO,WM_CHAR,Ord(zeile[i]),0);

Man könnte das zwar für Linux anpassen (XEvent), aber das wird nicht funktionieren. Unter Linux gibt es kein einheitliches System für Botschaften. Da kocht jedes Programm sein eigenes Süppchen. Somit kannst du nur Standard Events an die Fenster schicken.

_________________
Ist Zeit wirklich Geld?
bolli Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 17.09.03 14:54 
wie standart events? kannst du es mir genauer erklären?
Ultima online ist ein windows programm, welches unter linux mit wine ausgeführt wird.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 17.09.03 15:11 
bolli hat folgendes geschrieben:
welches unter linux mit wine ausgeführt wird.

Na dann viel Spaß. Dann hast du noch weniger Chancen, da Wine seine eigenen Fenster hat, von denen selbst der XWindows (X86Free) nichts weiß, da sie für X nur gezeichnete Linien/Bilder sind und somit kein Handle besitzen.

_________________
Ist Zeit wirklich Geld?
bolli Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 17.09.03 15:15 
praktisch unmöglich oder wie?

da ja gott sei dank immer der textcursor offen ist, muss es doch möglich sein, das fenster manuell anzuwählen oder? also das das proggi doppelklick in den bereich den ich festgelegt hab macht, und dann schreibt?
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 17.09.03 17:43 
1. Möglichkeit: Du musst in den Adressraum der Wine-Anwendung eindringen. Das erlaubt Linux aber nicht so ohne weiteres. Du brauchst, wenn das überhaupt geht schon root Rechte.

2. Möglichkeit: Du schickst ein XEvent an das richtige Handle. Nun ist wine aufgefordert, dass richtige Control zu finden. Hierfür kenne ich aber die Befehle nicht. Und die gesamte Xlib Unit zu durchforsten ist mir ehrlich gesagt zu aufwendig um ein Problem zu lösen, das nicht mal mein eigenes ist.

_________________
Ist Zeit wirklich Geld?
pHew
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP Prof
D6 Enter
BeitragVerfasst: Do 15.01.04 18:42 
Da ich selbst schon genug Programme unter Delphi geschrieben habe, um in UO powergaming zu betreiben, kann ich vielleicht etwas helfen.

In Ultima Online ist egal was man tut ständig der Textcursor offen, wie schon geschrieben. Es würde also theoretisch reichen wenn das Programm eine Sekunde wartet damit man UO Fensterchen aktiviert, und dann einfach Tastendrücke simuliert. Geht das?

_________________
Kill Bill
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Do 15.01.04 20:03 
Titel: hmm,
mal 'ne naive Frage, warum schreibst du nicht ein Delphiprogramm und lässt es auch unter wine laufen ? Das sollte dann wieder gehen da ja WINE die Win Api imitiert und du dich im 'selben' System befindest wie UO sollte wine den Rest für dich Regeln.

_________________
mfg. Joel