Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
688to692
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
688to692
688to692
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anwendungen schliessen

Anwendungen schliessen
30.10.2005 14:12:22
fred
hallo liebe leute,
ich könnte hilfe gebrauchen, bitte !!
habe eine grosse anwendung aus der heraus weitere arbeitsmappen geöffnet werden. die anwendungen können über programm beeenden button auch wieder geschlossen werden, was dazu führt, dass die unteranwendung gespeichert und geschlossen wird, die hauptanwendung wieder aktiviert wird. das ist das, was funktioniert. jetzt möchte ich noch entweder verhindern oder steuern, dass ein anwender mit dem roten x die application schliesst, denn dabei verläuft sich mein programm. es schliesst zwar mit speichern alle anwendungen, jedoch wird die application zum schluss nicht geschlossen und man muss nochmal das rote x bemühen.
vielen dank
fred

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anwendungen schliessen
30.10.2005 14:47:08
Nepumuk
Hallo Fred,
deaktiviere das Schließenkreuz:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetSystemMenu Lib "user32" ( _
    ByVal hwnd As Long, _
    ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" ( _
    ByVal hMenu As Long, _
    ByVal nPosition As Long, _
    ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" ( _
    ByVal hwnd As Long) As Long

Private Const MF_BYPOSITION = &H400&
Private Const MF_REMOVE = &H1000&

Private Sub Workbook_Open()
    Dim hwnd As Long
    hwnd = GetActiveWindow()
    RemoveMenu GetSystemMenu(hwnd, 0), 6, MF_BYPOSITION Or MF_REMOVE
    DrawMenuBar hwnd
End Sub

Gruß
Nepumuk

Anzeige
AW: Anwendungen schliessen
31.10.2005 09:43:55
Fred
klasse, hat funktioniert.
muss jetzt nur noch eine möglichkeit finden, zum schluss das schliesskreuz vielleicht beim before close wieder zu aktivieren.
fred
AW: Anwendungen schliessen
31.10.2005 10:15:07
Nepumuk
Hallo Fred,
dann besser so:
Option Explicit

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" ( _
    ByVal hWnd As Long) As Long

Private Const GWL_STYLE = -&H10
Private Const WS_SYSMENU = &H80000
Private Const gcClassnameMSExcel = "XLMAIN"

Private Sub Workbook_Open()
    Dim lHwnd As Long
    lHwnd = FindWindow(gcClassnameMSExcel, Application.Caption)
    SetWindowLong lHwnd, GWL_STYLE, GetWindowLong(lHwnd, GWL_STYLE) And Not WS_SYSMENU
    DrawMenuBar lHwnd
End Sub

Private Sub Workbook_BeforeClose()
    Dim lHwnd As Long
    lHwnd = FindWindow(gcClassnameMSExcel, Application.Caption)
    SetWindowLong lHwnd, GWL_STYLE, GetWindowLong(lHwnd, GWL_STYLE) Or WS_SYSMENU
    DrawMenuBar lHwnd
End Sub

Gruß
Nepumuk

Anzeige
AW: Anwendungen schliessen
31.10.2005 14:05:32
Fred
wowwww, danke
funktioniert sogar noch viel besser. verdammt, was kann ich anstellen, um so was zu lernen?
gruss
fred
AW: Anwendungen schliessen
31.10.2005 14:27:20
Nepumuk
Hallo Fred,
ich schreib seit fast 30 Jahren Programme. Seit 15 Jahren in VBA da lernt man das langsam. :-)
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige