AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Einfügen in Sourcecode vom RAD Studio ?
Thema durchsuchen
Ansicht
Themen-Optionen

Einfügen in Sourcecode vom RAD Studio ?

Ein Thema von RWarnecke · begonnen am 9. Okt 2008 · letzter Beitrag vom 9. Okt 2008
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 15:05
Hallo,

gibt es eine Möglichkeit, dass ich von einem anderen Programm einen Text an die aktuelle Stelle im Sourcecode einfügen kann, wenn Turbo Delphi oder RAD Studio mit einem aktuellen Projekt geöffnet ist. Ich habe schon mit WinSpy rumgespielt, komme aber leider nicht weiter.

Wäre nett, wenn Ihr mir da helfen könntet.

Mein jetziger Sourcecode :
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  Dec(ChildNr);
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Break;
    Result := hChild;
  end;
end;

procedure TForm5.Button1Click(Sender: TObject);
var
  wndMain, wndChild: HWND;
begin
  wndMain := FindWindow('TAppBuilder',nil);
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0, 'TEditorDockPanel', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TEditWindow', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil);
    wndChild := FindWindowEx2(wndChild,'TPanel', 2);
    wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TEditControl', nil);
    if wndChild <> 0 then
    begin
      SendMessage(wndChild, WM_COPYDATA, 0, LongInt(PChar('Eingefügt')));
      ShowMessage('Window Handle: ' + IntToStr(wndChild));
    end;
  end;
end;
Ich habe mir gedacht, fange ich einfach an und füge nur ein Wort hinzu. Leider funktioniert das weder mit WM_COPYDATA noch mit WM_SETTEXT. Ich vermute mal das liegt auch daran, dass zum Schluss nur ein TEditControl steht. Nur wie komme ich an das eigentlich Memo wo der Sourcecode drinsteht ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 15:25
Für diese Problemstellung läge es irgendwie erstmal auf der Hand, die OpenTools API zu verwenden, oder spricht etwas gegen ein Delphi-Plugin? Wenn du nicht dein ganzes Programm als Plugin integrieren willst, könntest du z.B. auch eine Art "Communicator-Plugin" schreiben welches dir via OpenTools-API Zugriff auf den Editor gibt und an dein Programm weiterleitet!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 15:36
Zitat von Meflin:
... du z.B. auch eine Art "Communicator-Plugin" schreiben welches dir via OpenTools-API Zugriff auf den Editor gibt und an dein Programm weiterleitet!
Ich wollte von meinem Programm auf den Sourcecodeeditor von der IDE zugreifen und nicht umgekehrt und das ganze am besten ohne Plugin für die IDE.

Edit: Rechtschreibfehler korrigiert.

Edit 2: Deshalb bin ich auf die Variante mit WinSpy gekommen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 15:52
Tja, dann hast du das Problem, dass du zum ermitteln des Handles prinzipiell erstmal das Handle des Delphi-Main-Windows bräuchtest, welches man über den Fenstertitel ermittelt - nur den weißt du vermutlich nicht, da er sich ja je nach geöffnetem Projekt ständig ändert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 15:56
Naja, über den Classname ginge es ja auch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 16:03
Zitat von Meflin:
Tja, dann hast du das Problem, dass du zum ermitteln des Handles prinzipiell erstmal das Handle des Delphi-Main-Windows bräuchtest, welches man über den Fenstertitel ermittelt - nur den weißt du vermutlich nicht, da er sich ja je nach geöffnetem Projekt ständig ändert
Also kann ich jetzt daraus schliessen, dass das PlugIn für die IDE besser dafür geeignet wäre ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 16:06
Zitat von RWarnecke:
Also kann ich jetzt daraus schliessen, dass das PlugIn für die IDE besser dafür geeignet wäre ?
Naja ich sags mal so: Ich finde die FindWindow-Methode wesentlich umständlicher, zumindest kenne ich keinen Weg, elegant an das Handle zu kommen (Abgesehen von der ToolsAPI ). *Ich* würde das Plugin bevorzugen, aber vielleicht gibts ja einen halbwegs praktikablen anderen Weg...
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 16:10
Zitat von Meflin:
Naja ich sags mal so: Ich finde die FindWindow-Methode wesentlich umständlicher, zumindest kenne ich keinen Weg, elegant an das Handle zu kommen (Abgesehen von der ToolsAPI ). *Ich* würde das Plugin bevorzugen, aber vielleicht gibts ja einen halbwegs praktikablen anderen Weg...
Hast Du ein paar brauchbare Tutorials für mich. Die ich bis jetzt gefunden habe, bauen noch auf Delphi 5 - 7 auf. Oder hat sich da bis jetzt nicht groß etwas geändert ?

Edit: Aber ich werde mal etwas abwarten, ob jemand anderes noch einen anderen Weg weiß, wie ich das realisieren kann.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 16:26
Zitat von RWarnecke:
Hast Du ein paar brauchbare Tutorials für mich. Die ich bis jetzt gefunden habe, bauen noch auf Delphi 5 - 7 auf. Oder hat sich da bis jetzt nicht groß etwas geändert ?
Naja, das Problem ist: Es gibt nicht wirklich viele und gute Tutorials oder gar eine Dokumentation. Aber D7 ist OK, da war die ToolsAPI ja schon Interface-Basiert, blöder wäre D3, wo sie noch Klassenbasiert war. So musst du nur im Quelltext der ToolsAPI.pas gucken ob es evtl noch eine höhere/neuere Version des Interfaces aus dem Tutorial gibt. Eine gute Quelle für konkrete Problemstellungen sind die Quelltexte der GExperts

Zitat:
Edit: Aber ich werde mal etwas abwarten, ob jemand anderes noch einen anderen Weg weiß, wie ich das realisieren kann.
Nuja, du könntest dir über den Prozessnamen alle Window-Handle des Prozesses ermitteln, über diese iterieren und mittels Trial & Error versuchen, ob du auf irgendeinem dann das entsprechende Editor-Fenster findest, dafür sollte dann der restliche WinSpy-Code schon passen. Ist aber auch nicht ohne...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Einfügen in Sourcecode vom RAD Studio ?

  Alt 9. Okt 2008, 16:55
Zitat von RWarnecke:
Ich wollte von meinem Programm auf den Sourcecodeeditor von der IDE zugreifen und nicht umgekehrt und das ganze am besten ohne Plugin für die IDE.
Wozu soll das gut sein ?
Ich meine es gibt auch schlauere Methoden, Daten aus einem Programm in den Sourcecode einfliesen zu lassen, als der Zugriff ins Editorfenster der IDE.
Sowieso versagen unter Windows Vista & Windows 7 alle Programme, die auf diese unsaubere Art anderen Programmen etwas unterschieben wollen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz