Buongiorno.
Premetto di essere quasi a digiuno di script di batch (ne ho scritto qualcuno semplice più di 10 anni fa).
Il mio obiettivo è questo:
Vorrei avviare CipherShed, fargli aprire la finestra con la password di un container, all'immissione della password farglielo montare e portare in primo piano la finestra appena creata.
L'eseguibile, il file .bat e l'archivio sono nella stessa cartella.
Tra una cosa e un'altra (più che altro AI) ho trovato questo codice:
@echo off
CipherShed.exe /v "CipherShed.tc" /l z /q
echo In attesa che venga immessa la password in Ciphershed...
powershell -command "& {
Add-Type -AssemblyName System.Windows.Forms;
Add-Type -AssemblyName System.Drawing;
while ($true) {
$window = Get-Process | Where-Object { $_.MainWindowTitle -eq 'CipherShed - Enter Password' };
if ($window) {
[System.Windows.Forms.SendKeys]::SendWait('{ENTER}');
break;
}
Start-Sleep -Seconds 1;
}
}"
echo La password è stata immessa e il tasto Enter è stato premuto, ora il batch può continuare.
echo In attesa che il container venga montato...
:check
timeout /t 5 >nul
if exist Z:\nul goto mounted
goto check
:mounted
echo Il container è stato montato, ora il batch può continuare.
start Z:
exit
La prima riga funziona, mi apre il programma e se la password è corretta monta il volume.
Il problema viene dopo.
Come faccio a bloccare lo script in attesa della finestra?
Credo di avere individuato l'inghippo.
Non riesco a sapere come si chiama la finestra della password, quindi non riesco a stopparlo e mi prosegue...
Qualcuno mi può aiutare?
Grazie
Premetto di essere quasi a digiuno di script di batch (ne ho scritto qualcuno semplice più di 10 anni fa).
Il mio obiettivo è questo:
Vorrei avviare CipherShed, fargli aprire la finestra con la password di un container, all'immissione della password farglielo montare e portare in primo piano la finestra appena creata.
L'eseguibile, il file .bat e l'archivio sono nella stessa cartella.
Tra una cosa e un'altra (più che altro AI) ho trovato questo codice:
@echo off
CipherShed.exe /v "CipherShed.tc" /l z /q
echo In attesa che venga immessa la password in Ciphershed...
powershell -command "& {
Add-Type -AssemblyName System.Windows.Forms;
Add-Type -AssemblyName System.Drawing;
while ($true) {
$window = Get-Process | Where-Object { $_.MainWindowTitle -eq 'CipherShed - Enter Password' };
if ($window) {
[System.Windows.Forms.SendKeys]::SendWait('{ENTER}');
break;
}
Start-Sleep -Seconds 1;
}
}"
echo La password è stata immessa e il tasto Enter è stato premuto, ora il batch può continuare.
echo In attesa che il container venga montato...
:check
timeout /t 5 >nul
if exist Z:\nul goto mounted
goto check
:mounted
echo Il container è stato montato, ora il batch può continuare.
start Z:
exit
La prima riga funziona, mi apre il programma e se la password è corretta monta il volume.
Il problema viene dopo.
Come faccio a bloccare lo script in attesa della finestra?
Credo di avere individuato l'inghippo.
Non riesco a sapere come si chiama la finestra della password, quindi non riesco a stopparlo e mi prosegue...
Qualcuno mi può aiutare?
Grazie