Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  VB.NET Me.Close() viskab veateate märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
sirius4k
HV veteran
sirius4k

liitunud: 25.09.2005




sõnum 09.03.2015 23:00:40 VB.NET Me.Close() viskab veateate vasta tsitaadiga

Tervist

Mul praegu miskit sellist:
If File.Exists(appfolder & appexec) Then
            sbp_app_check.Text = "Programm on olemas"
         Else
            Dim AppWebSite As DialogResult = MsgBox("Programmi ei leitud asukohast: " & appfolder & appexec & Chr(13) & "Kas tahad programmi alla laadida ?", MsgBoxStyle.YesNo, "Programmi ei leitud")
            If AppWebSite = Windows.Forms.DialogResult.Yes Then
               Process.Start("http://üksprogramm.ee/")
               Me.Close()
            End If
End If
Nagu näha tahaks ma, et programm sulguks kohe peale seda, kui kasutaja on vajutanud Yes nuppu ja läinud veebilehele.
Programm avab veebilehe, mis on hea ja viskab seejärel veateate:
tsitaat:
An unhandled exception of type 'System.Security.SecurityException' occurred in mscorlib.dll
Additional information: Requested registry access is not allowed.

Kui ma Me.Close ära võtan, töötab programm normaalselt.

Minu soov on, et programm ikka sulguks peale veebilehe käivitamist. Või kui saaks teada, miks Me.Close nii käitub.
icon_idea.gif Ideid icon_question.gif

PS icon_exclaim.gif Igaks proovisin tühja projektiga ja kirjutasin nupu külge Me.Close() ning seal toimis.
---
Uus info
Eelnevast koodijupist järgmine blokk on selline:
Kui ma selle välja kommenteerisin, kadus eelmine probleem ära.
Dim envpath As String = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine)
        If envpath.Contains("Programm") Then
            sbp_envpath_check.Text = "Env. Path olemas"
        Else
            Dim ProgramPath As DialogResult = MsgBox("Programm ei ole Environment Pathis" & Chr(13) & "Kas tahad Programmi lisada sinna ?" & Chr(13) & "Programmi normaalseks tööks on vajalik, et Programmi asukoht on Environment Pathis", MsgBoxStyle.YesNo, "Program Environment Path Check")
            If ProgramPath = Windows.Forms.DialogResult.Yes Then
                Environment.SetEnvironmentVariable("Path", envpath & ";C:\myProgram\bin", EnvironmentVariableTarget.Machine)
            End If
End If

Mida tegema peaks, et kui ma eelnevas blokis Yes vajutan ja veebilehele lähen, siis programm täielikult mättasse löödaks icon_question.gif Praegu tundub, et kui ma Me.Close() kutsun, siis see üritab veel järgmist blokki läbi käia ja ilma sisendit saamata viskab veateate.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 55
tagasi üles
vaata kasutaja infot saada privaatsõnum
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 09.03.2015 23:22:57 vasta tsitaadiga

Me.Close()

Kas sul programmi nimi on: Me?
Kas sbp_app_check on kasutajaformi checkbox?

Lootes, et VBNet on sarnane VBA-ga pakun:

Kasutajaformi sulgemiseks kasutatakse: Me.close.
Programmi sulgemiseks siis äkki kõlbab midagi sellist: Application.quit
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
sirius4k
HV veteran
sirius4k

liitunud: 25.09.2005




sõnum 09.03.2015 23:35:11 vasta tsitaadiga

Me on nö. instantsi nimi. Programmi poole ei saa pöörduda selle nime kasutades. Ütleb, et tuleb Me'd kasutada.
sbp_app_check on staatuse label, kuhu kirjutatakse, kas programm on olemas, või mitte.

Mainimata jäi eelmises postis, et VS Express 2013 on keskkond, kus ma oma programmikäkki trein. Juhuks, kui see oluliseks peaks osutuma.
---
Panin VS Expressi korra adminina käima ja töötas normaalselt. Panin kinni ja panin selle nö. tavaliselt käima jälle ja endiselt töötab icon_neutral.gif

Enne, kui ma sellega hakkama sain, jõudsin jälile täpsemalt, mis programmi vaevas.
Viimasest blokist see If tsükkel:
If ProgramPath = Windows.Forms.DialogResult.Yes Then
    Environment.SetEnvironmentVariable("Path", envpath & ";C:\myProgram\bin", EnvironmentVariableTarget.Machine)
End If
Ma saan aru, et admini õiguste ja/või admin elevationi tõttu ei olnud programmil õigusi env. pathi midagi kirjutada, aga niiviisi, nagu mina tahaks, et mu programm toimiks, ei oleks see tohtinud nii kaugele üldse jõudagi.
Igatahes praegu see toimib, pean leiutama miskisuguse õiguste kontrolli vajaminevatele toimingutele.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 55
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  VB.NET Me.Close() viskab veateate
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.