Seite 1 von 2

Mein verzweifelter Versuch Gadgets dynamisch zu laden

Verfasst: 19.08.2006 00:30
von Konne
Hallo, ich bin verzweifelt.
Seit Wochen versuche ich Gadgets irgendwie dynamisch (also mit dlls oda so) in mein Programm zu laden. Wenn die eine Hirde geknackt ist, kommt schon die nächste.
Bis jetzt habe ich versucht Gadgets irgendwie auf die WindowID die ich übergebe zu erzeugen, aber der Eventloop geht dann vollens den Bach hinunter.
Naja langsam gehen mir die Ideen aus. Hat irgenwer eine Ahnung wie man sowas machen kann?

Verfasst: 19.08.2006 02:08
von mardanny71
Direkt ins Programmfenster?Integriert?
Nein - -leider keine Ahnung.

Der übliche Weg wäre ja:
Gadget in Hauptexe optional erzeugen - Funktionalität in dll.

Willst Du was für Windows machen?

Was sich pair API machen lässt könnte vielleicht Integriert werden.

Wäre aber sicher sehr Umfangreich - eben was für Experten.

Code?

gruß
mardanny71

Verfasst: 19.08.2006 11:52
von PBZecke
Bitte genauer erklären was Du vor hast.

Verfasst: 19.08.2006 12:10
von Alves
Dafür wäre diese Funktion nützlich:

Code: Alles auswählen

Execute(string$)
Dass man in dem String zum Beispiel das stehen hat:

Code: Alles auswählen

string$="Buttongadget(...)
Dass er denString ausführt.

Diesen String würden wir aus einer Textdatei auslesen und dann im beim WIndowerstellen ausführen.

Verfasst: 19.08.2006 13:37
von #NULL
@alves
so eine funktion kann es nicht geben - dafür ließe sich das aber z.b. so machen (ist aber nicht was konne braucht):

Code: Alles auswählen

OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  PanelGadget     (0, 8, 38, 306, 173)
    AddGadgetItem (0, -1, "A")
    AddGadgetItem (0, -1, "B")
  CloseGadgetList()
  ButtonGadget(1, 8,8, 86,25, "DRYCK'N")

i=2
Repeat
  event=WaitWindowEvent()
  If event=#PB_Event_Gadget And EventGadget()=1
    SetGadgetState(0,1);[zweites item anzeigen]
   
    OpenGadgetList(0, 1)
      ButtonGadget(i, 5,5+i*20, 50,15, Str(i) )
      i+1
    CloseGadgetList()
  EndIf
Until event=#PB_Event_CloseWindow 

Verfasst: 19.08.2006 13:38
von mardanny71
Alves hat geschrieben:Dafür wäre diese Funktion nützlich:

Code: Alles auswählen

Execute(string$)
Dass man in dem String zum Beispiel das stehen hat:

Code: Alles auswählen

string$="Buttongadget(...)
Dass er denString ausführt.

Diesen String würden wir aus einer Textdatei auslesen und dann im beim WIndowerstellen ausführen.
Aber ein Gadgetaufruf ist doch eine Funktion, welche erst einmal compiliert werden muß.
Oder wie meinst Du das?

grüsse an alle
mardanny71

Verfasst: 19.08.2006 14:10
von Konne
Ich meine wie man ein Gadget aus einer dll erstellen kann und dann den eventloop noch unter kontrolle.

Verfasst: 19.08.2006 15:06
von Alves
Also diese Funktion gibt es auch nicht.

Ich meinte das so, dass esw schön wäre, diese zu haben, da man so zb in einen String eine komplette Funktion mit Parametern zu schrieebn, diesen String zb aus einer datei ausliest und dann ausführt (den string).

So könnte man vor der Widowerstellung die Strings mit den adgets lesen und ausführen bei der Windowerstellung.

Verfasst: 19.08.2006 15:56
von #NULL
schon verstanden, aber dann modifizierst du den programm-fluß ja auf quelltext-ebene, d.h. du müßtest ihn danach (nochmal) compilieren.
..oder man setzt es als compilerdirektive um, aber dann hat es noch weniger mit "dynamisch" zu tun.

Verfasst: 19.08.2006 16:23
von mardanny71
@Alves
In einer Textdatei könnten höchstens Strings stehen, welche eine schon compilierte Funktion aufrufen und Parameter übergeben.Aber das willst Du sicher nicht.
@Konne
Frage:
Wo rufst Du die DLL auf?
Vor der Hauptschleife?
Vieleicht ist das ja dein Prob...

grüsse an alle
mardanny71