VB.NET Lancer un logiciel non visible

R56rom Messages postés 1 Date d'inscription mercredi 27 janvier 2016 Statut Membre Dernière intervention 27 janvier 2016 - Modifié par R56rom le 27/01/2016 à 19:13
cs_Le Pivert Messages postés 7870 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 23 janvier 2023 - 29 janv. 2016 à 09:38
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

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222
27 janv. 2016 à 19:01
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222
27 janv. 2016 à 20:33
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
0
vb95 Messages postés 3391 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 2 février 2023 163
28 janv. 2016 à 22:29
Bonsoir ucfoutu
Je confirme tes dires
Amitiés
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222
Modifié par ucfoutu le 29/01/2016 à 08:05
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
0
pijaku Messages postés 12261 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 14 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
29 janv. 2016 à 08:24
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222 > pijaku Messages postés 12261 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022
29 janv. 2016 à 08:30
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
0
cs_Le Pivert Messages postés 7870 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 23 janvier 2023 137
29 janv. 2016 à 09:38
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
0
Rejoignez-nous