INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

C++ DLL mit GUI von LabVIEW starten



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

06.09.2012, 10:18
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: C++ DLL mit GUI von LabVIEW starten
(06.09.2012 09:47 )balze schrieb:  Hallo zusammen,

ich habe die Aufgabe eine Software (in Delphi 7) in LabVIEW nachzuprogrammieren.
Diese Software beeinhaltet eine ziemlich aufwendige Maske zur Parametrierung des Versuches.
Diese Maske wurde in C++ geschrieben und ist in einer DLL aufrufbar.

Funktionsprototyp:
int CreateSpec(HINSTANCE hinst, HWND hwnd, ProfileData *g_SpecData, SpecDesign *g_SpecDesign);

Die Strukturen ProfileData und SpecDesign sind fuer mein jetziges Problem noch ohne Belang und duerfen auf NULL zeigen.
Das ganze funktioniert in der Delphi-Software problemlos. Bei Aufruf der DLL wird die C++ GUI ueber das Delphi GUI gelegt.

Ich habe Probleme dies mit LabVIEW nachzubilden. Die DLL antwortet mir immer mit dem Fehlercode fuer eine ungueltige HINSTANCE (Rueckgabewert = 1).

Ist es ueberhaupt moeglich von LabVIEW aus DLLs mit GUI zu starten? Ich habe hierzu keine Informationen finden koennen (wuesste aber auch nicht, warum das nicht gehen sollte ....).

Ich waere fuer jeden Tipp dankbar!

Meine Entwicklungsumgebung: LabVIEW 2011 auf Windows 7/64

Schoenen Gruss

Balze

Im Prinzip ist es zwar möglich, in der Praxis aber manchmal mit ziemlichen Problemen gepflastert. LabVIEW macht auf Windowsebene ziemlich heftige Klimmzüge um das zu tun was es eben tun soll. Mit Delphi kenne ich mich nicht so aus, aber ich kann mir gut vorstellen, dass die auf window management Ebene auch so einiges auf ihre eigene Weise tun. Das kann sich schon mal sehr unhübsch beissen mit der Weise wie LabVIEW sein internes window management abhandelt.

Grundsätzlich kannst Du aber mal versuchen um die Windows API Methode GetModuleHandle() aufzurufen und das damit erhaltene Handle als HINSTANCE zu übergeben. Möglicherweise funktioniert auch einfach NULL, da viele Funktionen das interpretieren um in diesem Fall selber GetModuleHandle() aufzurufen. Als nächstes kommt dann natürlich HWND welches wohl als Parent des dargestellten Dialogs fungiert. Auch hier ist NULL oft zulässig da dies dann als Desktop angesehen wird, der Dialog ist also Desktop modal, nicht unbedingt immer sehr praktisch aber zu Testzwecken auch wieder nicht so katastrophal. Später kannst Du immer noch mittels FindWindow() das Handle zu Deinem Hauptfenster abfragen und dieses als Parameter übergeben.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: C++ DLL mit GUI von LabVIEW starten - rolfk - 06.09.2012 10:18

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Windows-Script (*.vbs) Dateien in LabVIEW starten Zet 12 22.976 01.06.2015 16:40
Letzter Beitrag: rolfk
  Fortran-Programm über Labview starten jh1988 10 12.435 22.04.2013 19:28
Letzter Beitrag: rolfk
  Aus LabVIEW heraus externes Programm starten htw10870 7 21.195 19.11.2011 18:40
Letzter Beitrag: rolfk

Gehe zu: