none
Kann dll Dialoge anzeigen? RRS feed

  • Frage

  • Hi folks,

    ich habe eine unmanaged Win32 DLL, welche Dialoge und MessageBoxes anzeigt. Ist es bei ASP.NET möglich diese Dialoge beim Client anzuzeigen?

    Vereinfachtes Beispiel: test.dll auf dem Server hat eine Methode sayhello(), welche ein MessageBox.Show("Hello") aufruft. Ist es möglich beim Buttonklick in einer Website die Methode sayhello() aufzurufen, so dass die MessageBox beim Client angezeigt wird (gibt es eine Art Window-Forwarding?) oder würde sich die MessageBox auf dem Server öffnen?

    Gruß,
    Gerrit
    Dienstag, 16. Februar 2010 10:02

Antworten

  • Hallo Gerrit,
    ich habe eine unmanaged Win32 DLL, welche Dialoge und MessageBoxes anzeigt. Ist es bei ASP.NET möglich diese Dialoge beim Client anzuzeigen?

    Vereinfachtes Beispiel: test.dll auf dem Server hat eine Methode sayhello(), welche ein MessageBox.Show("Hello") aufruft. Ist es möglich beim Buttonklick in einer Website die Methode sayhello() aufzurufen, so dass die MessageBox beim Client angezeigt wird (gibt es eine Art Window-Forwarding?) oder würde sich die MessageBox auf dem Server öffnen?
    Nein, das geht so nicht. Dabei ist es egal, ob Du Managed oder Unmanaged Code verwendest. Einzig, wenn die Assembly (oder das ActiveX Control) im Client selbst laufen würde (was aber a) nur in IE und b) nur mit extrem niedrigen Sicherheitseinstellungen überhaupt gehen würde) wäre das so machbar.

    Ändere das so, dass ein <script type="text/javascript">window.alert( "Hallo Welt!" )</script> an den Client geht, das hat denselben Effekt.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 16. Februar 2010 12:02
    Moderator
  • Hallo Gerrit.
    ja. Leider bedeutet dies extrem viel Arbeit :(

    Es wäre ein tolles feature, wenn man Dialoge auf einem Remoteserver ausführen könnte und die Darstellung über irgendeine Art zum Client geforwarded wird (ähnlich X-forwarding bei X11/X.org). Http könnte dann benutzt werden um das forwarding zu initiieren. Auf diese Art könnte man Desktopanwendungen auf die Schnelle webfähig machen.
    Das wäre kein tolles Feature, das wäre Unfug.

    Wenn Du eine RichClient Anwendung brauchst, nimmt Flash, Silverlight, ... HTML ist für sowas (gottlob) nie gedacht gewesen. HTML bietet zusammen mit JavaScript von Version zu Version mehr an Funktionalität. Aber das, was Du da machen willst, wird nicht unterstützt und das ist auch gut so.

    Ändere die Login entsprechend und verwende für die Interaktion bspw. eine Kombination aus jQuery, jQueryUI, Webservices, ...

    Oder halt gleich Flash bzw. Silverlight.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 16. Februar 2010 14:43
    Moderator
  • Hallo Gerrit,
    Das ist leider nicht möglich. Ich bin nicht der Entwickler der DLL. Ich arbeite zwar im gleichen Team, aber muss die DLL als Third-Party DLL betrachten. Die Funktionalität und Programmlogik, die ich benötige, ist in Dialogen implementiert. Daher wäre es für meinen Fall am einfachsten, wenn man diese Dialoge auf der Clientsite anzeigen könnte.
    dann kannst du das nicht in eine Webanwendung integrieren. In dem Fall musst Du einen komplett anderen Weg gehen, sorry. Das von dir gewünschte ist nicht realisierbar, es sei denn, es wäre eine ActiveX Komponente, die im IE angezeigt werden kann. Aber selbst dann, wie schon erwähnt, nur IE und nur mit faktisch nicht existenten Sicherheitseinstellungen.

    ---

    @Mod: *bedankt* :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 16. Februar 2010 15:54
    Moderator

Alle Antworten

  • Hallo Gerrit,
    ich habe eine unmanaged Win32 DLL, welche Dialoge und MessageBoxes anzeigt. Ist es bei ASP.NET möglich diese Dialoge beim Client anzuzeigen?

    Vereinfachtes Beispiel: test.dll auf dem Server hat eine Methode sayhello(), welche ein MessageBox.Show("Hello") aufruft. Ist es möglich beim Buttonklick in einer Website die Methode sayhello() aufzurufen, so dass die MessageBox beim Client angezeigt wird (gibt es eine Art Window-Forwarding?) oder würde sich die MessageBox auf dem Server öffnen?
    Nein, das geht so nicht. Dabei ist es egal, ob Du Managed oder Unmanaged Code verwendest. Einzig, wenn die Assembly (oder das ActiveX Control) im Client selbst laufen würde (was aber a) nur in IE und b) nur mit extrem niedrigen Sicherheitseinstellungen überhaupt gehen würde) wäre das so machbar.

    Ändere das so, dass ein <script type="text/javascript">window.alert( "Hallo Welt!" )</script> an den Client geht, das hat denselben Effekt.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 16. Februar 2010 12:02
    Moderator
  • Hallo Stefan,

    danke für die Antwort. Schade, dass dies nicht geht. Für das einfache Beispiel einer MessageBox funktioniert der von dir genannte Workaround, aber für komplexe Dialoge ist dies leider nicht mehr möglich.

    Gruß,
    Gerrit

    Dienstag, 16. Februar 2010 12:33
  • Hallo Gerrit,

    wir sprechen ja im Web auch über HTML-Seiten, angereichert durch CSS und JavaScript. Unabhängig davon, was serverseitig verwendet wird. Von den gewohnten Mustern der Desktop-Programmierung musst du dich verabschieden.

    Heißt - komplexe Dialoge müssen entsprechend den Web-Techniken umgesetzt werden. Beispielsweise so .
    Dienstag, 16. Februar 2010 12:46
  • Hallo Thomas,

    ja. Leider bedeutet dies extrem viel Arbeit :(

    Es wäre ein tolles feature, wenn man Dialoge auf einem Remoteserver ausführen könnte und die Darstellung über irgendeine Art zum Client geforwarded wird (ähnlich X-forwarding bei X11/X.org). Http könnte dann benutzt werden um das forwarding zu initiieren. Auf diese Art könnte man Desktopanwendungen auf die Schnelle webfähig machen.

    Gruß,
    Gerrit

    Dienstag, 16. Februar 2010 13:40
  • Hallo Gerrit.
    ja. Leider bedeutet dies extrem viel Arbeit :(

    Es wäre ein tolles feature, wenn man Dialoge auf einem Remoteserver ausführen könnte und die Darstellung über irgendeine Art zum Client geforwarded wird (ähnlich X-forwarding bei X11/X.org). Http könnte dann benutzt werden um das forwarding zu initiieren. Auf diese Art könnte man Desktopanwendungen auf die Schnelle webfähig machen.
    Das wäre kein tolles Feature, das wäre Unfug.

    Wenn Du eine RichClient Anwendung brauchst, nimmt Flash, Silverlight, ... HTML ist für sowas (gottlob) nie gedacht gewesen. HTML bietet zusammen mit JavaScript von Version zu Version mehr an Funktionalität. Aber das, was Du da machen willst, wird nicht unterstützt und das ist auch gut so.

    Ändere die Login entsprechend und verwende für die Interaktion bspw. eine Kombination aus jQuery, jQueryUI, Webservices, ...

    Oder halt gleich Flash bzw. Silverlight.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 16. Februar 2010 14:43
    Moderator
  • Wenn Du eine RichClient Anwendung brauchst, nimmt Flash, Silverlight, ... HTML ist für sowas (gottlob) nie gedacht gewesen. HTML bietet zusammen mit JavaScript von Version zu Version mehr an Funktionalität. Aber das, was Du da machen willst, wird nicht unterstützt und das ist auch gut so.

    Ändere die Login entsprechend und verwende für die Interaktion bspw. eine Kombination aus jQuery, jQueryUI, Webservices, ...

    Oder halt gleich Flash bzw. Silverlight.

    Das ist leider nicht möglich. Ich bin nicht der Entwickler der DLL. Ich arbeite zwar im gleichen Team, aber muss die DLL als Third-Party DLL betrachten. Die Funktionalität und Programmlogik, die ich benötige, ist in Dialogen implementiert. Daher wäre es für meinen Fall am einfachsten, wenn man diese Dialoge auf der Clientsite anzeigen könnte.

    Gruß,
    Gerrit
    Dienstag, 16. Februar 2010 15:27
  • Hallo Gerrit,
    Das ist leider nicht möglich. Ich bin nicht der Entwickler der DLL. Ich arbeite zwar im gleichen Team, aber muss die DLL als Third-Party DLL betrachten. Die Funktionalität und Programmlogik, die ich benötige, ist in Dialogen implementiert. Daher wäre es für meinen Fall am einfachsten, wenn man diese Dialoge auf der Clientsite anzeigen könnte.
    dann kannst du das nicht in eine Webanwendung integrieren. In dem Fall musst Du einen komplett anderen Weg gehen, sorry. Das von dir gewünschte ist nicht realisierbar, es sei denn, es wäre eine ActiveX Komponente, die im IE angezeigt werden kann. Aber selbst dann, wie schon erwähnt, nur IE und nur mit faktisch nicht existenten Sicherheitseinstellungen.

    ---

    @Mod: *bedankt* :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 16. Februar 2010 15:54
    Moderator