Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Saros 20: il robot preciso e molto sottile
Roborock Saros 20: il robot preciso e molto sottile
Il nuovo robot di Roborock per l'aspirazione della polvere e il lavaggio dei pavimenti spicca per immediatezza d'uso e per l'efficacia dell'azione, grazie anche a un ridotto sviluppo in altezza. Saros 20 integra un motore da ben 36.000Pa di potenza e un sistema di lavaggio a due panni rotanti, con bracci estensibili e un sistema di navigazione molto preciso.
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS e HIFIMAN uniscono le forze per creare ROG Kithara, cuffie gaming con driver magnetici planari da 100mm, design open-back e microfono MEMS full-band. Una proposta che ambisce a coniugare fedeltà per audiofili e performance ludiche, disponibili a 319 euro
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-08-2008, 22:56   #1
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
[VB] script x eseguire comandi da un form (lock, screensaver)

Ciao, mi potete aiutare a creare un piccolo script per WindowsXp?

Non so granchè di programmazione e pensavo al VBS (meglio altro?).
Non so purtroppo neanche i nomi, quindi cercherò di farmi capire come posso..

Mi servirebbe creare un'interfaccia grafica tipo MessageBox (se si chiama così) con opzioni da selezionare (il cerchio in cui si mette un pallino) che eseguono comandi\programmi appena si clicca sul classico pulsante OK.

Al massimo mi potete passare un link ad una guida con esempi?
Help


p.s: ho abbozzato la GUI su word (conosco già i comandi dos necessari, ma devo abilitarli e tradurli nel linguaggio scelto):


EDIT: titolo corretto

Ultima modifica di phaolo : 01-09-2008 alle 02:27.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2008, 01:24   #2
RuKa
Senior Member
 
L'Avatar di RuKa
 
Iscritto dal: Sep 2003
Città: Farra di Soligo
Messaggi: 965
Se ho capito bene vuoi creare una semplice form con 4 scelte e cliccando su ok viene eseguita quella selezionata.
In vbs eviterei,se proprio vuoi rimanere con quella sintassi puoi andare di vb6, oppure vb.net,c#,ecc ecc,vedi un po te quale preferisci o quale magari conosci un po meglio.

Qua puoi trovare un esempio per disattivare lo screensaver in vb.net
RuKa è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2008, 10:34   #3
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
Ah si chiama form. Comunque si, hai capito esattamente
Ma potresti aiutarmi a costruirlo? Non so neanche se vb funziona direttamente o se devo compilarlo (e con cosa?). Oppure mi passi un link ad esempi di form (intanto cerco)?


Per il codice io ho solo le istruzioni in un batch che avevo creato in precedenza (con una voce in più ora):

Codice:
:SCREENSAV

if "%1"=="" goto :EOF

rem ##lock and run screensaver
if "%1"=="lockscr" ( 
reg add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /d 1 /t REG_SZ /f
sscommander.scr /s
%SYSTEMROOT%\System32\rundll32.exe user32.dll,LockWorkStation
goto :EOF
)

rem ##lock and disable screensaver
if "%1"=="lock" ( 
reg add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /d 0 /t REG_SZ /f
%SYSTEMROOT%\System32\rundll32.exe user32.dll,LockWorkStation
goto :EOF
)

rem ##run screensaver only
if "%1"=="scr" ( 
reg add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /d 1 /t REG_SZ /f
sscommander.scr /s
goto :EOF
)

rem ##enable screensaver
if "%1"=="scron" ( 
reg add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /d 1 /t REG_SZ /f
goto :EOF
)

rem ##disable screensaver
if "%1"=="scroff" ( 
reg add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /d 0 /t REG_SZ /f
goto :EOF
)

Ultima modifica di phaolo : 02-09-2008 alle 13:13.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2008, 18:53   #4
RuKa
Senior Member
 
L'Avatar di RuKa
 
Iscritto dal: Sep 2003
Città: Farra di Soligo
Messaggi: 965
Beh per creare una form come quella ci metti all'incirca 20 secondi,+ che altro c'è da vedere che strumenti hai a disposizione,se non hai ancora nulla il metodo + veloce potrebbe essere scaricare la versione express dell'ultimo ide della microsoft (visual studio 2008),da li hai la possibilità di "costruirti" graficamente la form e poi in base al linguaggio che utilizzi inserire le 4 scelte.
RuKa è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2008, 21:00   #5
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
Si lo script è minuscolo, solo che non sapevo da dove partire.
Dowload per vb2008 express iniziato (pesantuccio comunque.. 700mb).
Vedremo cosa riuscirò a combinare.
Grazie RuKa
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2008, 16:56   #6
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
Mm..non ho avuto granchè successo.
Ho creato la GUI ma il codice mi dà errori (molte parti sono copiate da internet). Non ho idea del perchè..mi sai aiutare qui?

Codice:
Public Class Form1

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
    Private Declare Function LockWorkStation Lib "user32.dll" () As Long
    Private Const WM_SYSCOMMAND As Long = &H112
    Private Const SC_SCREENSAVE As Long = &HF140&
    Dim regKey As RegistryKey
    Dim regVal As String

    Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click

        '// lock with screensaver
        If Radio1LockScr.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
            LockWorkStation()
            SendMessage(Form1.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&)
        End If

        '// lock without screensaver
        If Radio2Lock.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 1 Then
                regKey.SetValue("ScreenSaveActive", "0")
            End If
            regKey.Close()
            LockWorkStation()
        End If

        '// run screensaver only (run without lock on resume)
        If Radio3Scr.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
            SendMessage(Form1.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&)
        End If

        '// screensaver enable (just set. Lock on resume depends on system settings)
        If Radio4ScrOn.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
        End If

        '// screensaver disable 
        If Radio5ScrOff.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 1 Then
                regKey.SetValue("ScreenSaveActive", "0")
            End If
            regKey.Close()
        End If

    End Sub

End Class


Se ti servono, ecco i messaggi di errore:
Error 1 'As Any' is not supported in 'Declare' statements. 3 155
Error 2 Type 'RegistryKey' is not defined. 7 19
Error 3 Name 'Registry' is not declared. 14 22
Error 4 'hWnd' is not a member of 'WindowsApplication1.Form1'. 21 25
Error 5 Expression expected. 21 67 (dove c'è ByVal 0&)
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2008, 21:57   #7
RuKa
Senior Member
 
L'Avatar di RuKa
 
Iscritto dal: Sep 2003
Città: Farra di Soligo
Messaggi: 965
Vedi se cosi ti può andar bene:

Codice:
Imports Microsoft.Win32

Public Class Form1

    'Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function LockWorkStation Lib "user32.dll" () As Long
    Private Const WM_SYSCOMMAND As Long = &H112
    Private Const SC_SCREENSAVE As Long = &HF140&
    Dim regKey As RegistryKey
    Dim regVal As String

    Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click

        '// lock with screensaver
        If Radio1LockScr.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
            LockWorkStation()
            'SendMessage(hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&)
        End If

        '// lock without screensaver
        If Radio2Lock.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 1 Then
                regKey.SetValue("ScreenSaveActive", "0")
            End If
            regKey.Close()
            LockWorkStation()
        End If

        '// run screensaver only (run without lock on resume)
        If Radio3Scr.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
            'SendMessage(Form1.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&)
        End If

        '// screensaver enable (just set. Lock on resume depends on system settings)
        If Radio4ScrOn.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
        End If

        '// screensaver disable 
        If Radio5ScrOff.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 1 Then
                regKey.SetValue("ScreenSaveActive", "0")
            End If
            regKey.Close()
        End If

    End Sub

End Class
RuKa è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 00:18   #8
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
Molto meglio, però ti sei dimenticato di togliere i commenti da alcune parti. Gli errori 4 e 5 sono ancora presenti

Penso che potrei sostituirli con questo altro codice (relativo al primo bottone):
Codice:
Set objShell = CreateObject( "Wscript.Shell" )
returnVal = objShell.Run( "%windir%\System32\sscommander.scr" , 1, True)
objShell.Run "%windir%\System32\rundll32.exe user32.dll,LockWorkStation"
Ma "Set" non sembra esistere..mi serviranno altri Import? Oppure è colpa della versione Express?
Che casino..


p.s: solita fortuna poi, nella guida manca proprio la pagina di "set statement"..

Ultima modifica di phaolo : 01-09-2008 alle 01:19.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 02:08   #9
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
Sii ce l'ho fatta! Ho usato Dim ed ho sostituito quei comandi assurdi.
Che bello, il mio primo script VB! (copia&incolla + a caso lol)
Grazie RuKa il tuo aiuto è stato fondamentale!


Codice:
Imports Microsoft.Win32

Public Class Form1

    Private Declare Function LockWorkStation Lib "user32.dll" () As Long
    Dim regKey As RegistryKey
    Dim regVal As String
    Dim objShell = CreateObject("WScript.Shell")
    Dim returnVal As String



    Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click

        '// lock with screensaver
        If Radio1LockScr.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
            returnVal = objShell.Run("%windir%\System32\sscommander.scr", 1, True)
            LockWorkStation()
        End If

        '// lock without screensaver
        If Radio2Lock.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 1 Then
                regKey.SetValue("ScreenSaveActive", "0")
            End If
            regKey.Close()
            LockWorkStation()
        End If

        '// run screensaver only (run without lock on resume)
        If Radio3Scr.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
            returnVal = objShell.Run("%windir%\System32\sscommander.scr", 1, True)
        End If

        '// screensaver enable (just set. Lock on resume depends on system settings)
        If Radio4ScrOn.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 0 Then
                regKey.SetValue("ScreenSaveActive", "1")
            End If
            regKey.Close()
        End If

        '// screensaver disable 
        If Radio5ScrOff.Checked Then
            regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            regVal = regKey.GetValue("ScreenSaveActive")
            If regVal = 1 Then
                regKey.SetValue("ScreenSaveActive", "0")
            End If
            regKey.Close()
        End If

        Close()

    End Sub

    Private Sub ButtonCanc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCanc.Click
        Close()
    End Sub
End Class

p.s: piccola critica su VB.. scomoda Iso udf con dentro TUTTO il pacchetto express, installazione lentissima che si connette ad internet di continuo, stessa cosa il programma. Era proprio necessario? Mah!

Ultima modifica di phaolo : 01-09-2008 alle 02:20.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 21:37   #10
RuKa
Senior Member
 
L'Avatar di RuKa
 
Iscritto dal: Sep 2003
Città: Farra di Soligo
Messaggi: 965
Non ho mai provato la versione express (per lavoro uso quella completa) però considerando che le differenze per un utilizzo amatoriale tra le 2 versioni non ci sono (se non un notevole risparmio ) direi che si può anche sopportare un'installazione un po lenta.
Felice di poter essere stato di aiuto.
RuKa è offline   Rispondi citando il messaggio o parte di esso
Old 02-09-2008, 11:51   #11
phaolo
Senior Member
 
Iscritto dal: Sep 2006
Messaggi: 450
Vero, ma penso che la versione base sia gratis soprattutto per poter creare nuovi "adepti".
Cmq è stato divertente

Scrivo l'ultima versone corretta (così, per pignoleria hehe)


Codice:
Imports Microsoft.Win32

Public Class PaoForm

    Dim regKey As RegistryKey
    Dim regVal As String
    Dim objShell = CreateObject("WScript.Shell")

    '// set the form screen position (center)
    Private Sub PaoForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim working_area As Rectangle = SystemInformation.WorkingArea
        Dim x As Integer = (working_area.Left + working_area.Width - Me.Width) / 2
        Dim y As Integer = (working_area.Top + working_area.Height - Me.Height) / 2
        Me.Location = New Point(x, y)
    End Sub

    '// registry REG_SZ needs to be a string, otherwise you'll get a DWORD
    Private Sub ScrReg(ByVal scrset As String)
        regKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
        regVal = regKey.GetValue("ScreenSaveActive")
        If regVal <> scrset Then
            regKey.SetValue("ScreenSaveActive", scrset)
        End If
        regKey.Close()
    End Sub

    Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click

        '// lock with screensaver
        If Radio1LockScr.Checked Then
            ScrReg(1)
            objShell.Run("%WINDIR%\System32\sscommander.scr", 1, True)
            objShell.Run("%WINDIR%\System32\rundll32.exe user32.dll,LockWorkStation")
        End If

        '// lock without screensaver
        If Radio2Lock.Checked Then
            ScrReg(0)
            objShell.Run("%WINDIR%\System32\rundll32.exe user32.dll,LockWorkStation")
        End If

        '// run screensaver only (without lock on resume)
        If Radio3Scr.Checked Then
            ScrReg(1)
            objShell.Run("%WINDIR%\System32\sscommander.scr", 1, True)
        End If

        '// screensaver enable (just set it; lock on resume depends on system settings)
        If Radio4ScrOn.Checked Then
            ScrReg(1)
        End If

        '// screensaver disable 
        If Radio5ScrOff.Checked Then
            ScrReg(0)
        End If

        Close()
    End Sub

    Private Sub ButtonCanc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCanc.Click
        Close()
    End Sub

End Class

Ultima modifica di phaolo : 02-09-2008 alle 14:07.
phaolo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Honor al MWC 2026: Robot Phone, lo smart...
NVIDIA ha superato Apple: adesso è...
Samsung non abbandonerà la S-Pen:...
Fibra ottica e monitoraggio sismico: acc...
La nuova Xbox è già morta,...
Il SoC dei nuovi Google Pixel 11 potrebb...
Anche Samsung punterà sulle batte...
Volkswagen supera quota 2 milioni di aut...
Pokémon Vento e Onda si mostrano ...
Costa meno di 17€ ma gonfia fino a 150 P...
Il nuovo MacBook entry level potrebbe av...
iPhone 17 a 909€ in tutti i colori: 256G...
Umidità e muffa addio a 99€: ques...
Compri il nuovo Xiaomi 17 e ti regalano ...
NVIDIA diversifica i fornitori di GDDR7:...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v