BossiG Inserito: 8 ore fa Segnala Inserito: 8 ore fa Buongiorno. sto attualmente lavorando con WinCC Unified V21 su un panel PC. di norma su un pannello Unified normale cliccando un campo I/O o un qualsiasi campo d'inserimento compare a schermo la tastiera per poter scrivere, invece, con il PC, ciò non accade. guardando un po' in giro ho trovato uno script di Siemens che permette di avviare la tastiera virtuale di Windows ma il processo si blocca. a seguire li script che sto utilizzando e l'errore visualizzato sul RTIL trace viewer: session: 0002, trace: SystemFunction 'StartProgram' failed! Error =ResultCode: 0x80000002 Error: CF_R_CANCELLED Description: The component reported a general error (File: D:\agent\_work\16\s\source\ScriptDeviceObjectModelPC\HmiDeviceSysFct.cpp, Func: CCScriptFW::CHmiDeviceSysFct::StartApp::<lambda_2>::operator ()) InternalMessage='promise rejected' stando alla mia comprensione del trace lo script non dovrebbe star dando problemi, quanto più sembrerebbe che una parte del codice C++ che lo blocca (come scritto in questa parte dell'errore: "The component reported a general error (File: D:\agent\_work\16\s\source\ScriptDeviceObjectModelPC\HmiDeviceSysFct.cpp" ). ho controllato i permessi utente e sono corretti. sto genuinamente finendo le idee.
drugo66 Inserita: 8 ore fa Segnala Inserita: 8 ore fa Ciao, il problema potrebbe essere che si sta cercando di avviare un processo a 64 bit (C:\\Windows\\SysWOW64\\osk.exe) in un processo a 32 bit; qualche tempo fa ho avuto lo stesso problema in C# ed ho risolto effettuando parecchie ricerche sul web: prova a vedere se questo e questo ti spiega meglio il problema (avevo trovato un bell'articolo su Stackoverflow che spiegava in modo esauriente il problema, ma non lo trovo più ...). Alla fine ho inserito "C:\\Windows\\sysnative\\cmd.exe /c start osk.exe" con "sysnative" usato come parola chiave che indica al sistema di selezionare il processo per la tastiera a schermo più corretto da avviare; il problema è che non so se lo script lo accetta (la cartella "sysnative" non esiste); io proverei prima con "C:\\Windows\\system32\\osk.exe", sempre se il file esiste. altrimenti ci sono altre opzioni, ma occorrerebbe chiamare un paio di API di Windows e non so se sia possibile farlo in uno script del genere.
BossiG Inserita: 6 ore fa Autore Segnala Inserita: 6 ore fa Innanzitutto grazie per la risposta Drugo. è vero ho utilizzato "C:\\Windows\\SysWOW64\\osk.exe" perché in precedenza ho fatto varie prove partendo proprio da "C:\\Windows\\system32\\osk.exe" però, sospettando che la causa dell'errore fosse la difficoltà ad entrare in system32 ho provato a spostare osk.exe all'interno di SysWOW64 (con scarsi risultati in entrambe le cartelle). per intenderci, ad ora non sembrerebbe un problema legato alla funzione, in quanto; lo script non mi segnala errori suoi, e il percorso funziona quando messo manualmente. il problema sta nel fatto che quando WinCC cerca di accedere alle cartelle l'accesso viene negato fermando quindi il tutto. ho infatti provato sia SysWOW64, sia system32 e anche "C:\\Windows\\sysnative\\cmd.exe /c start osk.exe" che mi hai consigliato ma tutte le casistiche ricadono nello stesso errore precedentemente citato. non arrivo nemmeno alle cartelle di sistema vengo bloccato prima
drugo66 Inserita: 4 ore fa Segnala Inserita: 4 ore fa Proverei anche "C:\\Windows\\system32\\cmd.exe /c start osk.exe" o, addirittura, "C:\\Windows\\system32\\cmd.exe /c start C:\\Windows\\system32\\osk.exe"; dovrai prima rimettere il file osk.exe in system32. Nel frattempo ho effettuato una ricerca specifica per gli script di WINCC: 1 2 3 lascio a te la scelta e le prove; ho trovato anche questo per aprire in automatico la tastiera, ma non so se faccia al caso tuo. Se non risolvi ancora, proverei a creare un batch file con lo stesso comando (magari provalo prima senza script). Se ancora non funziona, posso provare a creare un eseguibile windows con il solo comando che serve in C#. Fammi sapere.
BossiG Inserita: 2 ore fa Autore Segnala Inserita: 2 ore fa ho fatto un po' di prove. ho testato i percorsi che mi consigliavi ma con lo stesso medesimo risultato. 2 ore fa, drugo66 ha scritto: "C:\\Windows\\system32\\cmd.exe /c start osk.exe" o, addirittura, "C:\\Windows\\system32\\cmd.exe /c start C:\\Windows\\system32\\osk.exe" cercando un po' in giro ho scoperto che la tastiera osk richiede delle autorizzazioni in più. ho quindi provato la nuova tastiera TabTip ("C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe") ma anche con quella ninete (in più la TabTip da problemi perché una volta chiusa non può essere riaperta se non viene terminata dal task manager). ho provato a verificare se c'è da qualche parte una whitelist in cui dovevo autorizzare il percorso ma non ho trovato nulla. ho provato ha creare un file Batch che di per se funziona ma ancora una volta non riesco a richiamare. la funzione StartProgram di Siemens è l'unico modo per accedere a comandi esterni? perché mi sembra che poco importa cosa gli chieda, non riesce nemmeno ad uscire la richiesta di comando
drugo66 Inserita: 1 ora fa Segnala Inserita: 1 ora fa A parte consigliarti di provare con un'altro file meno protetto, tipo notepad.exe, solo per vedere se il comando dello script funziona, non mi viene in mente altro. Purtroppo ho usato StartProgram o simile parecchio tempo fa, con Windows 7, ma non mi ricordo nemmeno per cosa ... Si potesse almeno impostare il file Batch come Amministratore, magari potrebbe risolvere qualcosa; per questo motivo pensavo di scrivere un programmino in C#: il file .exe si può impostare come esecuzione da Amministratore. Domani dovrei avere del tempo libero e potrò dedicarci più tempo; se risolvi prima, fammelo sapere qui, altrimenti domani in giornata ti faccio sapere cosa sono riuscito a combinare.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora