AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VNC Viever in Anwendung einbauen ?

Ein Thema von Pet04 · begonnen am 23. Okt 2014 · letzter Beitrag vom 24. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

VNC Viever in Anwendung einbauen ?

  Alt 23. Okt 2014, 15:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#2

AW: VNC Viever in Anwendung einbauen ?

  Alt 23. Okt 2014, 16:10
Der einfachste Weg dürfte ActiveX/COM sein. Es gibt eine handvoll VNC-Viewer, die ActiveX Komponenten bereitstellen. Google einfach mal danach.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#3

AW: VNC Viever in Anwendung einbauen ?

  Alt 23. Okt 2014, 16:30
Wie wär's denn damit?
http://www.delphipraxis.net/62839-[k...wrapper-3.html
Micha
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 08:37
bekommt man die Komponente auch unter XE2 zum laufen ?
und wie ?

Danke

Gruß

Pet
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.650 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 09:00
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?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 09:10
Wo kann ich es herunterladen.

Habe die Version deines links oben benutzt.
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 09:57
Hallo

habe es nun gefunden.
beim Comp. kommt der Fehler sppcryptd120 nicht gefunden.
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 10:29
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.
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 10:39
gerne.

wurde ich mir gerne anschauen.

Kann man auch die Verbindungsparameter (IP Passwort) Voreinstellen ?
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: VNC Viever in Anwendung einbauen ?

  Alt 24. Okt 2014, 11:02
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:27 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