Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Umschreiben auf 64 Bit? Nepumuk

Umschreiben auf 64 Bit? Nepumuk
29.10.2021 18:11:07
Andreas
Option Explicit
Hallo von Nepumuk hab ich folgende Code, der allerdings für 32 bit gedacht ist. Gibts sowas auch für 64 bit Versionen?
Vielen Dank ;)
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Any) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Const WM_SETICON As Long = &H80
Private Const GC_CLASSNAMEMSUSERFORM_9 = "ThunderDFrame"

Private Sub UserForm_Initialize()
SendMessage FindWindow(GC_CLASSNAMEMSUSERFORM_9, Me.Caption), _
WM_SETICON, 0&, Image1.Picture.Handle
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umschreiben auf 64 Bit? Nepumuk
29.10.2021 18:28:40
volti
Hallo Andreas,
hier die Declares für 64 Bit:
Code:

[Cc]

Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As LongPtr, _ ByVal wMsg As Long, _ ByVal wParam As LongPtr, _ lParam As Any) As LongPtr Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As LongPtr

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Umschreiben auf 64 Bit? Nepumuk
29.10.2021 22:19:59
Andreas
Hallo KarlHeinz,
leider funktioniert der Code damit nicht :(..Hat vielleicht noch jemand eine Idee?
Der Code soll bewirken, dass in einem Userform oben in der Titelleiste des Forms ein Icon angezeigt wird.
Mit derzeitigem Code wird nur ein "NichtGefunden"Symbol" angezeigt.
Das Image1 habe ich als Ico in 16x16 hinterlegt.
Trotzdem vielen Dank....
AW: Umschreiben auf 64 Bit? Nepumuk
29.10.2021 23:26:26
volti
Hallo Andreas,
die Declares sind korrekt, bei einem UF-Nachbau werden bei mir alle Handles erfolgreich ermittelt und in der Titelleiste (leider nur) ein DOS-Icon angezeigt.
Ggf. weiß Nepumuk was dazu, ansonsten hilft hier nur mal die Mappe hochzuladen..
Gruß
Karl-Heinz
Anzeige
AW: Umschreiben auf 64 Bit? Nepumuk - offen owt
29.10.2021 23:28:30
volti
Offen gelassen
AW: Umschreiben auf 64 Bit? Nepumuk
30.10.2021 08:43:15
Nepumuk
Hallo Andreas,
1. Der genderte Code:

Option Explicit
Private Declare PtrSafe Function SendMessageA Lib "user32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal wMsg As Long, _
ByVal wParam As LongPtr, _
ByVal lParam As Any) As LongPtr
Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
Private Const WM_SETICON As Long = &H80
Private Const GC_CLASSNAMEMSUSERFORM As String = "ThunderDFrame"
Private Sub UserForm_Initialize()
Dim lngptrFormHandle As LongPtr
lngptrFormHandle = FindWindowA(GC_CLASSNAMEMSUSERFORM, Caption)
Call SendMessageA(lngptrFormHandle, WM_SETICON, 0, Image1.Picture.Handle)
End Sub
2. Muss das Icon vom Typ .ico sein. Im Eigenschaftsfenster des Image-Controls siehst du das weil dann bei der Picture-Eigenschaft "(Symbol)" steht.
Gruß
Nepumuk
Anzeige
AW: Umschreiben auf 64 Bit? Nepumuk
31.10.2021 09:28:20
Andreas
Super, jetzt funktioniert das Ganze. VIelen Dank ihr beiden für Eure Bemühungen!
Macht immer wieder Spass, wenn am Ende was richtig funktioniert :)
AW: Zusatzinfo
30.10.2021 11:54:42
volti
Hallo,
meine Declare-Version hat nicht funktioniert bzw. setzt anstelle des gewünschten Icons das DOS-Icon, weil der letzte Parameter (lParam) der SendMessage-Function per Value übergeben werden muss. Das hatte ich vergessen.
Also entweder so ByVal lParam As Any in der Deklaration (wie bei Nepumuk)
oder so ByVal Image1.Picture.handle im Code selbst
Gruß
KH
Anzeige

58 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige