| 

.NET C# Java Javascript Exception

1
Frage: Kann man "durchscheinende" Fenster mit einem Opacity-Wert unter 100$ in einem VBA-Programm verwenden ?
Hintergrund: Die Eigenschaft Opacity für Fenster regelt die sogenannte Durchsichtigkeit. Damit kann man Fenster animiert ein und ausblenden. Ich habe eine DLL mit Visual Basic 2010 geschrieben, die das eigentlich nutzen sollte und die als Bibliothek in Access eingebunden ist, aber: Wenn ich dann ein Fenster damit aufrufe, dass ein Opacity-Wert unter 100% hat kommt eine Fehlermeldung. Gibt es dafür eine Lösung ?
16.02.2011
Gertowitsch 11 1 2
Du machst es uns viel leichter, wenn wenigstens die genaue Fehlermeldung posten würdest. So muss das ja jeder von uns nachbauen, um helfen zu können.
Torsten Weber 16.02.2011
4 Antworten
0
Ich habe die vollständigen Meldungen aufgeführt. Mein eigens Fazit ist, das VBA ewas dagegen hat. Eigentlich wollte ich dazu nur eine Bestätigung. Viele Grüße Gertowitsch

In einer Meldungsbox mit Titel NET.Framwork erscheint : Unbehandelte Ausnahme in einer Komponente der Anwendung. Wenn Sie auf weiter klicken, ignoriert die Anwendung den Fehler und setzt den Vorgang fort.

Falscher Parameter

und :

Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

************** Ausnahmetext **************
System.ComponentModel.Win32Exception: Falscher Parameter
bei System.Windows.Forms.Form.UpdateLayered()
bei System.Windows.Forms.Form.OnHandleCreated(EventArgs e)
bei System.Windows.Forms.Control.WmCreate(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.ContainerControl.WndProc(Message& m)
bei System.Windows.Forms.Form.WmCreate(Message& m)
bei System.Windows.Forms.Form.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladene Assemblys **************
mscorlib
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3603 (GDR.050727-3600).
CodeBase: file:///C:/WINNT/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
MMS_Service
Assembly-Version: 1.0.0.2.
Win32-Version: 1.0.0.4.
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/MMS_Service/1.0.0.2__d21bffb78b00f929/MMS_Service.dll.
----------------------------------------
System.Drawing
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3614 (GDR.050727-3600).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Data
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll.
----------------------------------------
Microsoft.VisualBasic
Assembly-Version: 8.0.0.0.
Win32-Version: 8.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
----------------------------------------
System.Windows.Forms
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System.Web
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3614 (GDR.050727-3600).
CodeBase: file:///C:/WINNT/assembly/GAC_32/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll.
----------------------------------------
System.Configuration
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
----------------------------------------
System.Xml
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3082 (QFE.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINNT/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------
mscorlib.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3603 (GDR.050727-3600).
CodeBase: file:///C:/WINNT/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>


Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.
17.02.2011
Gertowitsch 11 1 2
0
Servus,

An der Transparenz liegt es nicht. Da ich aber momentan kein Access habe, habe ich es mit Word 2003 probiert:

Windows Forms Anwendung als DLL compiliert und Assembly für COM-Interop registriert und einfach ein Formular mit Opacity 30% angelegt. Die erzeugte COM_Interop Referenz eingebunden und aufgerufen.

Sub test()
Dim frm1 As New Form1
frm1.Show
End Sub


Auch aufgrund deines Fehlerprotokolles vermute ich eher einen Fehler in der Komponente selbst.
17.02.2011
Maria Simlinger 1,1k 1 9
1
Liebe Maria,
habe ich ausprobiert. Mit Word 2003 funktioniert es tatsächlich, mit Access 2003 die gleiche DLL nicht!!!
Viele Grüße Gertowitsch
Gertowitsch 18.02.2011
Das ist ja interessant! Danke für die Info. Nur leider habe Access 2003 nicht mehr zur Verfügung, um das auszuprobieren.
Maria Simlinger 18.02.2011
Liebe Maria, leider hat Access in der Office-Familie eine Sonderstellung. Access-Programmdatenbanken kann man in Access als Bibliotheken einbinden, in Word aber nicht. Das war u.a. der Grund für eine VB-DLL. Viele Grüße Gertowitsch
Gertowitsch 18.02.2011
0
Servus nochmal,

vielleicht hilft folgender Download um das Problem zu umgehen. Ich kann diesen ja wie gesagt leider nicht testen: Interop Forms Toolkit

Ein Tutorial habe ich hier gefunden: codeproject

Grüße
maria
18.02.2011
Maria Simlinger 1,1k 1 9
Die DLL ist schon VB.NET. Das Toolkit wird da wahrscheinlich nicht gebraucht. Außerdem soll es sowieso Probleme geben, wenn Formulare mit dem Designer erzeugt und in einer DLL verwendet werden ...Trotzdem Danke.
Gertowitsch 18.02.2011
0
Vor ein paar Jahren habe ich das mal in eine Anwendung eingebaut. Die Funktion kann in der Aktivate Methode, in einer Schleife aufgerufen werden.

Option Explicit
'---------------------------------------------------------------------------------------
' Module : XTransparent
' DateTime : 19.03.2008
'---------------------------------------------------------------------------------------
'History : 19.03.2008, created
'

Private Declare Function _
GetActiveWindow Lib "user32" () As Long

Private Declare Function _
SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal lngWinIdx As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function _
GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal lngWinIdx As Long) As Long

Private Declare Function _
SetLayeredWindowAttributes Lib "user32" _
(ByVal hwnd As Long, _
ByVal crKey As Integer, _
ByVal bAlpha As Integer, _
ByVal dwFlags As Long) As Long

Private Const WS_EX_LAYERED As Long = &H80000
Private Const LWA_COLORKEY As Long = &H1
Private Const LWA_ALPHA As Long = &H2
Private Const GWL_EXSTYLE As Long = &HFFEC

Dim hwnd As Long

'---------------------------------------------------------------------------------------
' Procedure : Semitransparent
' DateTime : 19.03.2008
'---------------------------------------------------------------------------------------
'History : 19.03.2008, created
'
Public Sub Semitransparent(ByVal intLevel As Integer)
Dim lngWinIdx As Long

hwnd = GetActiveWindow
lngWinIdx = GetWindowLong(hwnd, GWL_EXSTYLE)
SetWindowLong hwnd, GWL_EXSTYLE, lngWinIdx Or WS_EX_LAYERED
SetLayeredWindowAttributes hwnd, 0, (255 * intLevel) / 100, LWA_ALPHA
End Sub
18.02.2011
Hauke 76 1
Holla Hauke, da fehlt wohl die Funktion "SetWindowLong" ?
Gertowitsch 18.02.2011
UUps entschuldige.
Gertowitsch 18.02.2011
Nachtrag: Die Transparenfunktion muss im Hauptprogramm stehen und man sollte manuell für die Fensteraktualisierung sorgen, weil Graphikaktualisierungen in Windows niedrige Priorität haben. Dann klappt es.
– Gast 23.02.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH