AGB  ·  Datenschutz  ·  Impressum  







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

Portierung VB --> Delphi, GetObject

Ein Thema von franky.f · begonnen am 23. Sep 2008 · letzter Beitrag vom 24. Sep 2008
 
franky.f

Registriert seit: 29. Jul 2008
8 Beiträge
 
#1

Portierung VB --> Delphi, GetObject

  Alt 23. Sep 2008, 11:27
Hallo,
ich portiere gerade ein altes VB6 Programm nach Delphi 7.
Das Programm soll sich über OLE mit einem laufenden anderen Programm verbinden und dort quasi "horchen".
In VB6 steht folgender Code:
Code:
Dim WithEvents App1_Sub As DefTypeLib.ApplType
Dim App1 As Object
   
Set App1 = GetObject("APPFX")
   
If App1 Is Nothing Then
    MsgBox "Konnte keine Verbindung zur Anwendung aufbauen. Wurde sie gestartet?", vbOKOnly Or vbCritical
    End
End If
   
Set App1_Sub = App1.GetSub
Set App1 = Nothing
Diesen Code hab ich im VB6 getestet, er funktioniert problemlos.

Ich hab nun schon viel im Internet gefunden, aber leider klappt schon GetActiveOleObject('APPFX'); nicht.
An der Stelle kommt dann der Fehler "Ungültige Klassenzeichenfolge".
Ich habs auch schon mit GetActiveOleObject('APPFX.Application'); probiert, da kommt dann "Vorgang nicht verfügbar".

GetActiveOleObject('APPFX'); will ja eigentlich den Klassennamen eines registrierten COM-Objects, ich denke, da liegt auch der Fehler, aber ich habe keine treffendere Funktion gefunden, die das GetObject von VB6 in Delphi ersetzt.
Das VB6
Code:
GetObject
hat ja den Dateinamen als Argument.
Wie stelle ich das in Delphi an?
Hier erstmal mein Code-Fragment.
Ich stelle sicher, dass die Anwendung APPFX, das ist eine Exe, die genauso, also APPFX.exe heisst, läuft. Daher rührt der Fehler also nicht.
Die TLB habe ich von Delphi erzeugen lassen, notfalls kann ich den Typ für App1_Sub aus dieser beziehen.
In vielen Beispielen aus dem Netz wurde da aber rigoros OleVariant genommen.

Delphi-Quellcode:
var
  App1, App1_Sub: OleVariant;

begin

  App1 := GetActiveOleObject('APPFX');

  if VarIsEmpty(App1) then
    ShowMessage('Konnte keine Verbindung zur Anwendung aufbauen. Wurde sie gestartet?');

  App1_Sub := App1.GetScriptingEngine;
  App1 := unassigned;
end;
Hat vielleicht jemand eine Idee, was ich noch anstellen muss, damit das unter Delphi genau so schön funktioniert wie mit VB6?

Danke im Voraus
Frank
  Mit Zitat antworten Zitat
 


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:22 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