![]() |
VNC Viever in Anwendung einbauen ?
Hallo ich möchte gerne VNC Viewer in meine Anwendung einbauen.
Der Viewer soll per buttonclick die Remoteverbindung herstellen. IP und Passwort sollen dann in eine ini Datei gespeichert werden können. Gibt es da eine Möglichkeit oder Beispiel Code. Gruß Pet |
AW: VNC Viever in Anwendung einbauen ?
Der einfachste Weg dürfte ActiveX/COM sein. Es gibt eine handvoll VNC-Viewer, die ActiveX Komponenten bereitstellen. Google einfach mal danach.
Sherlock |
AW: VNC Viever in Anwendung einbauen ?
|
AW: VNC Viever in Anwendung einbauen ?
bekommt man die Komponente auch unter XE2 zum laufen ?
und wie ? Danke Gruß Pet |
AW: VNC Viever in Anwendung einbauen ?
Das funktioniert bei mir problemlos, das Package im Verzeichnis VNCWrapper\projects\D120\VNCWrapper_D120.dpk (aus dem SVN Repository) lässt sich auch mit XE7 noch problemlos kompilieren und installieren.
Was passiert bei dir denn? Was hast du versucht? |
AW: VNC Viever in Anwendung einbauen ?
Wo kann ich es herunterladen.
Habe die Version deines links oben benutzt. |
AW: VNC Viever in Anwendung einbauen ?
Hallo
habe es nun gefunden. beim Comp. kommt der Fehler sppcryptd120 nicht gefunden. |
AW: VNC Viever in Anwendung einbauen ?
Ich habe es so gelöst, daß ich einen VNC Viewer mit shellexecute starte, mir dann das Fensterhandle des Viewers hole und dem Fenster dann mein Anzeigepanel als Parent setze.
Bei Interesse kann ich auch Quellcode bereitstellen. |
AW: VNC Viever in Anwendung einbauen ?
gerne.
wurde ich mir gerne anschauen. Kann man auch die Verbindungsparameter (IP Passwort) Voreinstellen ? |
AW: VNC Viever in Anwendung einbauen ?
Die Geschichte mit dem SetParent kommt daher, daß ich mein Anzeigefenster auch wieder in ein übergeordnetes Formular einhänge, und in dem Moment bekommt es eine andere ParentId, oder wie das nochmal war. Sollte aber normalerweise überflüssig sein.
Ich lasse aber einen Timer laufen, der die Aktivierung triggert, bis das Fenster angezeigt wird. Die Parameter für den VNC-Viewer hole ich aus einem Inifile. Das WindowToShow ist der Fenstertitel des gestarteten Viewers, ich musste da aufpassen, daß der Titel genau passt und am Ende wollte er auch noch unbedingt ein Leerzeichen haben. Bei Programmende suche ich mir das Handle des Windows-Explorers (Desktop) und gebe den VNC-Viewer wieder an Windows zurück, bevor ich den Prozess schliesse.
Code:
procedure TFormStatusanzeige.SetParent(AParent: TWinControl);
begin inherited; if assigned(aParent) then ActivateVNC; end; procedure TFormStatusanzeigePresse.Timer1Timer(Sender: TObject); begin ActivateVNC; end; procedure TFormStatusanzeigePresse.FormDestroy(Sender: TObject); var handle:HWND; begin handle:=FindWindowByTitle('explor'); Windows.SetParent(ExternesProgrammHandle,Handle); SendMessage(ExternesProgrammHandle, WM_CLOSE, 0, 0); end; procedure TFormStatusanzeigePresse.ActivateVNC; var WPM : TWindowPlacement; Rect : TRect; ProgramToStart, parameters:String; WindowToShow: string; Inifile: TInifile; begin Inifile:=TInifile.Create('setup.ini'); try ProgramToStart :=Inifile.ReadString('Settings','ProgramToStart','C:\Program Files\UltraVNC\vncviewer.exe'); Parameters :=Inifile.ReadString('Settings','parameters','-port 192.168.9.140 -password blabla -fullscreen -notoolbar'); WindowToShow :=Inifile.ReadString('Settings','WindowToStart','pcname ( 192.168.9.140 ) '); finally Inifile.Free; end; ExternesProgrammHandle:=Findwindow(nil, PWideChar(WindowtoShow)); if ExternesProgrammHandle=0 then ShellExecute(0, 'open', PWideChar(ProgramToStart), PWideChar(Parameters), nil, SW_NORMAL); ExternesProgrammHandle:=Findwindow(nil, PWideChar(WindowtoShow)); if ExternesProgrammHandle<>0 then begin Windows.SetParent(ExternesProgrammHandle,Panel1.Handle); WPM.Length:=SizeOf(WPM); GetWindowPlacement(ExternesProgrammHandle,@WPM); Rect.Top :=0; Rect.Left :=0; Rect.Right :=Panel1.Width; Rect.Bottom:=Panel1.Height; wpm.rcNormalPosition:=Rect; SetWindowPlacement(ExternesProgrammHandle,@WPM); ExternesProgrammEingehaengt:=True; Timer1.Enabled:=false; end; end; function FindWindowByTitle(WindowTitle: string): Hwnd; var NextHandle: Hwnd; NextTitle: array[0..260] of char; begin // Get the first window NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); while NextHandle > 0 do begin // retrieve its text GetWindowText(NextHandle, NextTitle, 255); if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then begin Result := NextHandle; Exit; end else // Get the next window NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); end; Result := 0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz