Avatar billede systek Nybegynder
25. august 2004 - 14:40 Der er 4 kommentarer og
1 løsning

Forhindre bruger i lukning af program

Hej,

Jeg sidder og sysler med et projekt, hvor excel bruges til at generere nogle rapporter. Jeg vil gerne på en enkel måde kunne forhindre brugeren i at lukke excel ned.

Er det muligt at fjerne "det lille kryds" oppe i systembar, så brugeren ikke umiddelbart kan lukke programmet,

eller er der andre gode ideer ?

Jeg vil gerne lave en løsning der kan laves fra excels VBA..
Avatar billede Slettet bruger
25. august 2004 - 22:36 #1
I Excel VBA kan du f.eks. skrive

Application.Visible = False

Programmet kører så stadigvæk, men vil ikke være synlig for brugeren.
Avatar billede systek Nybegynder
26. august 2004 - 08:26 #2
Ok, det giver nogle muligheder...
men det jeg gerne vil, er at forhindre brugeren i at kunne lukke excel ( f.eks ved et uheld)... (mit problem er at det tager meget lang tid at starte applikationen op igen)...
Avatar billede Slettet bruger
26. august 2004 - 21:36 #3
Hvis Excel kører usynligt fra starten, vil brugeren ikke kunne lukke den ned medmindre de dræber Excel processen fra Task Manageren. Du skal bare huske at lukke Excel ned fra koden f.eks.

Application.Quit

Hvilket program kalder du Excel fra ?
Avatar billede systek Nybegynder
27. august 2004 - 08:40 #4
Hej blackadder!

Excel startes ved PC'ens opstart...
kan det lade sig gøre at starte excel usynligt fra "start-menu" ( jeg anvender XP)...

Det er nødvendigt at brugeren kan se og indtaste i forskellige ark, disse ark kaldes fra et andet program via dde.

Jeg har mulighed for at aktivere diverse macro i excel via DDE. Excel anvendes sammen med et SCADA-system ( RS-View 32 fra Rockwell Software ).
Avatar billede systek Nybegynder
27. september 2004 - 18:51 #5
For god ordens skyld, her er den løsning jeg har fundet...

Private Const MF_BYPOSITION As Long = &H400   
''' Deletes the menus byposition (this is our default)

Private Const MF_BYCOMMAND As Long = &H0       
''' Deletes the menu by Command ID. This is rarely used and is shown here
for information purposes only.

Private Const mlNUM_SYS_MENU_ITEMS As Long = 9 
''' This is the number of items on the system menu

Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long,
ByVal bRevert As Long) As Long

Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal
nPosition As Long, ByVal wFlags As Long) As Long

Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As
String, ByVal lpWindowName As String) As Long


' Comments:  Deletes the system control menu of the specified window.
'
' Arguments:  DialogCaption The caption of the window whose control
'                          menu you want to delete. If not specified,
'                          Application.Caption is assumed.
'
Public Sub DisableActiveDialogMenuControls(DialogCaption As String)
    Dim lHandle As Long, lCount As Long
    On Error Resume Next
    DialogCaption = DialogCaption & vbNullChar
    lHandle = FindWindowA(vbNullString, DialogCaption)

    ' Only continue if the passed window handle isn't zero.

    If lHandle <> 0 Then

        ' There are 9 items on the application control menu.
        ' Loop through and disable each one.

        For lCount = 1 To mlNUM_SYS_MENU_ITEMS

            ' The nPosition of the DeleteMenu function will always be 0,
            ' because as we delete each menu item, the next one moves up
            ' into the first position (index of 0).

            DeleteMenu GetSystemMenu(lHandle, False), 0, MF_BYPOSITION
        Next lCount

    End If

End Sub

' Comments:  Restores the system control menu of the specified window.
'
' Arguments:  szCaption  (Optional) The caption of the window whose control
'                        menu you want to delete. If not specified,
'                        Application.Caption is assumed.
'

Public Sub EnableActiveDialogMenuControls(DialogCaption As String)

    Dim lHandle As Long
    On Error Resume Next
    DialogCaption = DialogCaption & vbNullChar
    lHandle = FindWindowA(vbNullString, DialogCaption)

    ' Passing True to the bRevert argument of the GetSystemMenu API restores
    ' the control menu of the specified window.

    GetSystemMenu lHandle, True

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester