![]() |
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; |
AW: VNC Viever in Anwendung einbauen ?
Für uns ist wesentlich interessanter, einen VNC-Server an die Kunden zu geben, damit wir auf den Kundenrechner Zugriff bekommen und fernwarten können.
Wir benutzen dazu ChuncVNC, was einigermaßen funktioniert. Man braucht dafür einen Repeater mit fester IP der über Internet erreichbar ist. Wir benutzen dafür einen gemieteten VServer mit Windows 2008. Das Server-Programm ist eine selbstextrahierende EXE mit der Grösse von etwa 1,2 MB. Der Kunde startet es bei Bedarf, bekommt dann eine 6-Stellige ID angezeigt die er dann dem Supporter durchgibt, der dann seinen Viewer startet. Probleme: Der Repeater verträgt sich nicht besonders mit WIN 2008 und stürzt manchmal ab; da er als Dienst läuft wird er zwar wieder gestartet, aber die Verbindungen vom Viewer müssen neu hergestellt werden. Wird der Server auf dem Kundenrechner mehrmals gestartet geht in der Regel nichts mehr in Sachen Fernwartung, ein Neustart des Kundenrechners ist dann nötig. |
AW: VNC Viever in Anwendung einbauen ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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