VB.NET Lancer un logiciel non visible

Messages postés
1
Date d'inscription
mercredi 27 janvier 2016
Dernière intervention
27 janvier 2016
-
Bonjour, voila donc j'ai un petit problème :

Je veux ouvrir un logiciel a partir d'un bouton qui l'ouvre depuis une destination
donc j'ai fais ce code :

process.Start("C:\Program Files (x86)\Skype tool By ManitouReal\Bin\Bin\Skype\text\color\Skype colors.exe")

Il marche mais le problème c'est que j'aimerais que le logiciel ce lance mais sans qu'on puisse le voir invisible quoi ! Une commande du type Visible = false

Voila merci
Afficher la suite 

Votre réponse

2 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
1) j'ai supprimé ton autre discussion à ce sujet (un doublon)
2) je suis assez tenté de supprimer celle-ci également, dont le titre n'est nullement révélateur de la difficulté que tu rencontres. Il est clair que si tu demandes de l'aide, c'est que tu a besoin d'aide à coder !
Modifie donc ton titre, s'il te plait.
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bien. Le titre résume maintenant ce que tu souhaites.
Je crois comprendre à la lecture de MSDN que tu dois d'abord utiliser la classe ProcessStartInfo avant de lancer la méthode start.
https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo%28v=vs.110%29.aspx
Si j'ai bien compris (je ne suis pas vbnettiste) l'utilisation de la propriété WindowStyle de cette classe permet (avant de lancer le processs par process.start) de définir la fenêtre du processus à lancer
https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo.windowstyle%28v=vs.110%29.aspx
Mais je ne vois rien concernant une "invisibité totale". Mais la possibilité de réduire la fenêtre ( ProcessWindowStyle.Minimized)
Essaye
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
Bonsoir ucfoutu
Je confirme tes dires
Amitiés
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour vb95,
Existe également une solution d'invisibilité totale, mais à la condition d'être en mesure d'extraire d'abord le handle de la fenêtre ouverte par l'exécutable concerné.
Si l'on a extrait ce handle, il suffit alors d'envoyer se "promener" la fenêtre hors de portée de vue (hors de l'écran, donc, en lui assignant par exemple des positions largement négatives).
Ceci peut se faire par utilisation de la fonction MoveWindow de la librairie user32 de l'API de Windows

EDIT : je viens de parcourir un peu MSDN (sur le Net car je n'ai pas VB.Net)
Je crois comprendre que l'extraction du handle nécessaire peut se faire ainsi :
le_handle = System.Diagnostics.Process.Start("....chemin de son exe ...")

Le "reste" devrait donc ressembler à quelque chose comme :
MoveWindow(le_handle, -1000, -1000, 100, 100, True)

à condition bien évidemment d'avoir déclaré la fonction MoveWindow dans la partie déclarative de son module.

PS : - et à condition également que l'exécutable dont il s'agit fait l'objet d'une fenêtre compatible Windows
- et à condition (sinon "in the baba") que le logiciel concerné n'impose pas (ce qui pourrait être le cas) un rétablissement périodique de positions imposées, bien sûr (ce qui peut se faire par diverses méthodes, y compris sans timer lorsque des évènements existent)

Ceci étant dit : je n'aime pas trop que "vive" Skype sans que l'utilisateur ne s'en aperçoive ...
Si tel était le cas, il serait bon que Skype pensât à une maj rendant la chose impossible
pijaku
Messages postés
12246
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
30 novembre 2018
> ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

Ceci étant dit : je n'aime pas trop que "vive" Skype sans que l'utilisateur ne s'en aperçoive ...
Ni, d'ailleurs, aucun logiciel.
Il est clairement expliqué dans ce fil comment lancer un "virus" de manière dissimulée...
Ma parano habituelle peut être...
Bonne journée et bon week end.
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
> pijaku
Messages postés
12246
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
30 novembre 2018
-
Bonjour, pijaku,
Pas un "virus" (qui, lui, n'utilise même pas de fenêtre), mais une "présence sournoise" qui pourrait être en effet très malsaine dans certains cas.
Amitiés
cs_Le Pivert
Messages postés
5607
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
Bonjour,

Tout a fait d'accord avec les réponses de ucfoutu et pijaku (que je salue), pour les applications cachées.
Mais comme on trouve tout sur le net, voici une réponse à la question posée:

Imports System.Runtime.InteropServices
Imports System.Threading
Public Class Form1
    <DllImport("user32.dll")> _
    Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As Integer) As Boolean
    End Function
    <DllImport("user32.dll")> _
    Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal windowName As String) As Boolean
    End Function
    'http://codes-sources.commentcamarche.net/forum/affich-10041058-lancer-un-exe-et-le-redimensionner#11
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim process As New Process()
        process.StartInfo.FileName = "notepad.exe"
        process.Start()
        Thread.Sleep(100)
        SetWindowPos(process.MainWindowHandle, IntPtr.Zero, 0, 0, 300, 200, 0)
    End Sub
    ' https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo.arguments(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim startInfo As ProcessStartInfo = New ProcessStartInfo("notepad.exe")
        startInfo.WindowStyle = ProcessWindowStyle.Hidden
        Process.Start(startInfo)
    End Sub
    '  https://openclassrooms.com/forum/sujet/vb-net-tuer-un-processus-68572
    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Dim myProcesses As Process() = Process.GetProcessesByName("notepad")
        Dim myProcess As Process
        For Each myProcess In myProcesses
            myProcess.Kill()
        Next myProcess
    End Sub
End Class


Les amis, si vous trouvez que ma réponse est hors charte, vous pouvez la supprimer. Elle est mise là que pour un but pédagogique

passez une bonne journée

@+ Le Pivert
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.