Programm aus einer DLL sichtbar starten
Programm aus einer DLL sichtbar starten
Hallo zusammen,
ich schreibe gerade eine kleine dll die als UDF in Firebird eingebunden werden soll. Jetzt will ich aus dieser DLL Winmerge starten und der Anwendung zwei Texte zum Vergleichen übergeben. Das klappt soweit auch, nur dass Winmerge immer für den User SYSTEM unsichtbar gestartet wird. Das Verhalten ist gleich, egal ob ich shell_execute oder WinExec verwende. Betriebssystem ist Win7 64 Bit.
Habt Ihr eine Idee?
Viele Grüße, Andreas
ich schreibe gerade eine kleine dll die als UDF in Firebird eingebunden werden soll. Jetzt will ich aus dieser DLL Winmerge starten und der Anwendung zwei Texte zum Vergleichen übergeben. Das klappt soweit auch, nur dass Winmerge immer für den User SYSTEM unsichtbar gestartet wird. Das Verhalten ist gleich, egal ob ich shell_execute oder WinExec verwende. Betriebssystem ist Win7 64 Bit.
Habt Ihr eine Idee?
Viele Grüße, Andreas
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Programm aus einer DLL sichtbar starten
andikad hat geschrieben:(...)
Habt Ihr eine Idee?
(...)
Ja, die habe ich tatsächlich: Poste Quellcode. ShellExecute hat diverse Parameter mit denen man das Anzeigeverhalten beeinflussen kann.
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
Re: Programm aus einer DLL sichtbar starten
Antrepolit hat geschrieben:Ja, die habe ich tatsächlich: Poste Quellcode. ShellExecute hat diverse Parameter mit denen man das Anzeigeverhalten beeinflussen kann.
Der Aufruf sieht so aus:
Code: Alles auswählen
WMArgs := format('/e %s %s', ['C:\Temp\LoadL.sql', 'C:\Temp\LoadR.sql']);
ShellExecute(0, 'open', apppath, PChar(WMArgs), nil, SW_NORMAL);
Aus einer Desktopanwendung heraus funktioniert dieser Aufruf so. Kann es sein, dass Winmerge im Hintergund gestartet wird, weil der Aufruf der Funktion in der DLL vom Firebirdserver gemacht wird?
Viele Grüße, Andreas
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Programm aus einer DLL sichtbar starten
Oh, das habe ich überlesen. Als User 'System' solltest du gar kein WinMerge starten. 'System' führt nämlich die wichtigen Sachen aus, und da hat keine GUI-Anwendung was zu suchen. Darf man generell fragen, was du damit vor hast?
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Programm aus einer DLL sichtbar starten
Antrepolit hat geschrieben:Oh, das habe ich überlesen. Als User 'System' solltest du gar kein WinMerge starten. 'System' führt nämlich die wichtigen Sachen aus, und da hat keine GUI-Anwendung was zu suchen.
In dem Fall könnte man die Datenbank doch als "normalen" User starten?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Programm aus einer DLL sichtbar starten
Antrepolit hat geschrieben:Darf man generell fragen, was du damit vor hast?
Wir haben eine Webanwendung zum Synchronisieren von Datenbanken geschrieben und würde Inhalte gerne mit Winmerge vergleichen. Hatten wir schon in der Desktopversion und fanden es besser als verschiedene webbasierte Diff-Bibliotheken.
Da ich keinen Weg gefunden habe, Winmerge von der Webanwendung aus zu starten, wollte ich jetzt mal den Weg über die Firebird-UDF probieren. In der Umgebung ist Winmerge auch nicht auf dem Client, sondern auf dem gleichen Server wie Firebird installiert. Könnte das Problem hier auch sein, dass die Anforderung ja vom Client ausgeht?
Habt Ihr eine andere Idee, wie sich das umsetzen ließe?
Viele Grüße, Andreas
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Programm aus einer DLL sichtbar starten
andikad hat geschrieben:Wir haben eine Webanwendung zum Synchronisieren von Datenbanken geschrieben und würde Inhalte gerne mit Winmerge vergleichen. Hatten wir schon in der Desktopversion und fanden es besser als verschiedene webbasierte Diff-Bibliotheken.
Da ich keinen Weg gefunden habe, Winmerge von der Webanwendung aus zu starten, wollte ich jetzt mal den Weg über die Firebird-UDF probieren. In der Umgebung ist Winmerge auch nicht auf dem Client, sondern auf dem gleichen Server wie Firebird installiert. Könnte das Problem hier auch sein, dass die Anforderung ja vom Client ausgeht?
Wie soll denn der User auf WinMerge zugreifen?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Programm aus einer DLL sichtbar starten
Socke hat geschrieben:Wie soll denn der User auf WinMerge zugreifen?
Naja, Winmerge soll für den Benutzer mit den Vergleichsergebnissen sinchtbar geöffnet werden und auch bedienbar sein.
Viele Grüße, Andreas
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Programm aus einer DLL sichtbar starten
andikad hat geschrieben:Socke hat geschrieben:Wie soll denn der User auf WinMerge zugreifen?
Naja, Winmerge soll für den Benutzer mit den Vergleichsergebnissen sinchtbar geöffnet werden und auch bedienbar sein.
Wenn der Benutzer die Webanwendung verwendet, kann er nicht auf WinMerge auf dem Server zugreifen. Es sei denn, du überträgst WinMerge per Bild/VNC/X-Protokoll etc.
Eine Alternative wäre: WinMerge auf den Clients installieren und über ein Browser-Plugin aufrufen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 1100
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Programm aus einer DLL sichtbar starten
Ich würde mal createprocesasuser versuchen. Muss man aber irgendwie das korrekte Token finden (etwas Googlen nehme ich an)
Auch alle Files worauf Winmerge zugreift (und in besonders diejenige die es schreiben soll) mussen die korrekte Erlaubnisse haben.
Auch alle Files worauf Winmerge zugreift (und in besonders diejenige die es schreiben soll) mussen die korrekte Erlaubnisse haben.