Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB.NET]Aprire a tutto schermo un applicazione DOS

    Salve. Ho un programma che mi apre delle applicazioni DOS e mi servirebbe che le visualizzi a tutto schermo, come quando si preme alt+enter, uso questa funzione per emulare la pressione dei due tasti sulla finestra attiva:

    codice:
    SendKeys.SendWait("{%}({ENTER})")
    ma l'unica cosa che accade è che se premo due volte il pulsante nel form per avviare l'applicazione DOS me la apre più volte, il codice completo nell'evento click del pulsante è questo:

    codice:
          
            ProcessUtilities = New Process
    
            ProcessUtilities.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
            ProcessUtilities.StartInfo.FileName = "C:\Folder\" & btnUtility1.Text & ".EXE"
            ProcessUtilities.Start()
    
            'SendKeys.SendWait("{%}({ENTER})")

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Scusa ma al di là del procedimento utilizzato:

    codice:
    ProcessUtilities = New Process
    
            ProcessUtilities.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
            ProcessUtilities.StartInfo.FileName = "C:\Folder\" & btnUtility1.Text & ".EXE"
            ProcessUtilities.Start()
    
            'SendKeys.SendWait("{%}({ENTER})")
    quando utilizzi il SendKeys hai la certezza che l'applicazione sia già avviata?
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    No, non ne sono sicuro, il fatto è che se provo a seguire passo passo il flusso di codice per vedere se funziona una volta avviata l'applicazione la finestra attiva diventa quella del sorgente e quindi mi perme alt+enter lì.

    Ho fatto la prova con un timer... adesso qualcosa succede alla finestra dell'applicazione... mi viene chiusa invece di aprirla a tutto schermo

    Mi correggo ancora... mi sembra che qualunque sequenza tasti emulo come risultato mi si chiude sempre la finestra dell'applicazione

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    E se invece di usare il sendKey utilizzi le API di Windows?

    codice:
     ProcessUtilities.StartInfo.WindowStyle = ProcessWindowStyle.Normal
            ProcessUtilities.StartInfo.FileName = "C:\miaApplicazione.exe"
            ProcessUtilities.Start()
    
            System.Threading.Thread.Sleep(1000)
    'Verificare che l'applicazione sia in esecuzione
    
            SetWindowPos(ProcessUtilities.MainWindowHandle.ToInt32, 0, 0, 0, 500, 500, 0)
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Come faccio ad usare l'API che mi hai postato? Mi da errore su SetWindowPos...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Devi ovviamente prima importare la funzione SetWindowPos :

    codice:
    <DllImport("user32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
    Public Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, _
    ByVal X As Int32, ByVal Y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal uFlags As Int32) As Boolean
        End Function
    e ovviamente importare il Namespace:

    codice:
    Imports System.Runtime.InteropServices
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    Scusami, è la prima volta che uso un API di Windows. Nel codice però manca il nome della funzione che si vuole usare dopo il nome della DLL o sbaglio?
    Comunque ho inserito tutto, ma credo il problema sia sempre lo stesso, mi permette di rimpicciolire la finestra ma non di ingrandirla oltre il limite, cioé è come se cliccassi sul tasto "ingrandisci", ho risolto per il momento impostando direttamente nelle proprietà delle applicazioni DOS che si aprano a schermo intero, ma da codice non riesco a trovare il modo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da Cavaliere Nero
    Scusami, è la prima volta che uso un API di Windows. Nel codice però manca il nome della funzione che si vuole usare dopo il nome della DLL o sbaglio?
    Si sbagli, il nome della funzione è 'SetWindowPos'.


    Comunque ho inserito tutto, ma credo il problema sia sempre lo stesso, mi permette di rimpicciolire la finestra ma non di ingrandirla oltre il limite..
    Assolutamente no, la funzione ti permette di posizionare e fare un Resize (ingrandire o rimpicciolire) della finestra, in base hai parametri che inserisci, come potevi vedere dal Link che ti avevo dato.
    Sbagliare è umano, perseverare è diabolico.

  9. #9
    Originariamente inviato da Pirelli72
    Si sbagli, il nome della funzione è 'SetWindowPos'.
    Intendevo qui:
    codice:
    <DllImport("user32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>


    Originariamente inviato da Pirelli72
    Assolutamente no, la funzione ti permette di posizionare e fare un Resize (ingrandire o rimpicciolire) della finestra, in base hai parametri che inserisci, come potevi vedere dal Link che ti avevo dato.
    Sì, mi ero guardato come funziona la funzione e avevo fatto diverse prove, non intendevo dire che non ingrandisce la finestra, dicevo che quella di DOS non me la ingrandisce oltre un certo limite, anche se aumento i valori non si ingrandisce più di tanto, così come premendo il tasto "ingrandisci" in alto a destra non la ingrandisce a tutto schermo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.