12. april 2003 - 15:45Der er
8 kommentarer og 2 løsninger
Afinstallation af VB 6.0 applikation
Jeg har en VB 6.0 applikation som jeg har lavet Packadge and Deploy på. Installation på en anden maskine går glat og applikationen viser sig fint i Start-menuen. Når man afinstallerer får man beskeden 'unable to remove x.exe', hvor x.exe er ens applikation - hvordan undgår man denne besked?
Du skal i din kode i Form QueryUnload skrive End så er du sikker på at End bliver kørt uanset hvordan programmet lukkes. Husk evt. at lukke evt. databaseadgang først, ellers står de åbne efter du har lukke programmet.
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim Msg ' Declare variable. If UnloadMode > 0 Then ' If exiting the application. Msg = "Do you really want to exit the application?" Else ' If just closing the form. Msg = "Do you really want to close the form?" End If ' If user clicks the No button, stop QueryUnload. If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then Cancel = True End Sub
men hvordan bruger jeg helt nøjagtigt dette stykke kode?
Det er jo en lille ekstra krølle "Er du sikker på at du vil afslutte?"
Brug det som der er eller nøjes med "End" uanset hvad bruger har klikket på.
QueryUnload bruges til at opfange utilsigtede lukninger fx krydset øverst. Hvis bruger svarer ja kan du sørge for at db og andet bliver lukket rigtigt inden dit program bliver lukket.
Indføjelse af koden i http://www.eksperten.dk/spm/341741 gør, at afinstallation går uden problemer, så så vidt jeg kan se, supplerer den Form_QueryUnload.
Lidt om End fra Excel97 vb-hjælp - stort set identisk med vb-hjælpen i VB:
Bemærk! Sætningen End standser straks udførelsen af programkode uden at kalde hændelserne Unload, QueryUnload eller Terminate eller nogen anden Visual Basic-kode. Programkode, der er placeret i hændelserne Unload, QueryUnload og Terminate til formularer og klassemoduler udføres ikke. Objekter, der er oprettet fra klassemoduler ødelægges. Filer, der er åbnet med sætningen Open, lukkes, og den hukommelse, som programmet bruger, frigøres. Objektreferencer, der tilhører andre programmer, gøres ugyldige.
Sætningen End giver dig mulighed for at tvinge programmet til at stoppe. Ved en normal afslutning af et Visual Basic-program, bør du fjerne alle formularer. Programmet lukkes, så snart der ikke er flere programmer, der indeholder referencer til objekter, som er oprettet fra dine offentlige klassemoduler, og der ikke køres programkode. ************* Som det fremgår lukkes programmet brutalt ned med End, derfor er det en god ide at bruge den inde i en Form_QueryUnload. Måske har der været en skjult form der stadig kørte medens du forsøgte at afinstallere? Et eller andet har der været.
En måde at teste dét på kunne være at installere sit program og umiddelbart afinstallere det uden at det har været åbnet. Hvis man kan det, er det fordi noget ikke er lukket rigtigt efter det har kørt på computeren.
Nå - godt du fik det løst...
Synes godt om
Ny brugerNybegynder
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.