Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-08-2008, 21: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 01:27.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2008, 00: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, 09: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 12:13.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2008, 17: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, 20: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, 15: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, 20: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 31-08-2008, 23: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 00:19.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 01: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 01:20.
phaolo è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2008, 20: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, 10: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 13:07.
phaolo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
La sonda spaziale ESA JUICE ha effettuat...
iPhone, crash a valanga su migliaia di a...
Se mangi queste patatine puoi vincere un...
Opera browser ha una eSIM integrata da 3...
WINDTRE BUSINESS e la Protezione Civile ...
Intel prepara i chip che si illuminano? ...
HUAWEI WATCH D3 arriva in Italia: l'orol...
PS5 Pro, in Giappone si compra per estra...
Recensione Nothing Headphone (1) Pro, de...
Oltre 16 mila database Supabase leggibil...
Galaxy Z Fold8 e Fold8 Ultra ai vertici ...
Teams dice addio alla scorciatoia rapida...
Tutte le scope elettriche in offerta per...
Hai ricevuto una multa per eccesso di ve...
Oracle Fusion Claw separa reasoning ed e...
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: 16:21.


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