Comment donner le focus à une autre application

cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010 - 16 déc. 2009 à 14:27
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 16 déc. 2009 à 18:29
Bonjour à tous.

Je voudrai savoir comment donner le focus à une autre application.
En fait je voudrais que quand je clique sur un bouton de mon appli vB.net
Il donne le focus à un autre programme.
J'avais trouvé ceci qui marche bien pour fermer le programme mais moi je voudrai activer la fenêtre!

Private Sub KillProcess(ByVal ProcessName As String)
Dim x As Integer
Dim oFoundProcess As System.Diagnostics.Process
Try
oFoundProcess = System.Diagnostics.Process.GetProcessesByName(ProcessName)(x)

oFoundProcess.kill()


Catch ex As Exception
MessageBox.Show("Error N° " & Err.Number & vbCrLf & Err.Description & vbCrLf & " In Module " & Err.Source, My.Application.Info.ProductName)
End Try


End Sub



Merci d'avance.


Alex

9 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 déc. 2009 à 14:30
tu peux jouer avec SetActiveWindo et le MainWindowHandle de ton oFoundProcess

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010
16 déc. 2009 à 15:17
Merci de ta réponse.

J'ai essayé ceci :

SetActiveWindow(oFoundProcess.MainWindowHandle)

Mais il se passe rien.

Désolé je ne suis pas un expert. Est-ce qu'il me manque quelquechose?

Merci.

Alex
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 déc. 2009 à 16:19
as tu déclaré l'API SetActiveWindow

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010
16 déc. 2009 à 16:30
J'ai mis ceci :
Declare Function SetActiveWindow Lib "user32" (ByVal hwnd As Integer) As Integer

Alex
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 déc. 2009 à 16:33
le code est bon, reste a voir si le MainWindowHandle est le bon...

(un FindWindow pourrai te permettre de retrouver celui qu'il te faut)

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010
16 déc. 2009 à 16:36
J'ai voulu tester autre chose findWindow et showWindow mais toujours sans succes.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function ShowWindow Lib "user32" Alias "ShowWindow" ( _
ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long

hdle = FindWindow(vbNullString, "notepad")
ShowWindow(hdle, 5)


rien ne se passe!!

Je ne comprends pas !!!

Help please
Alex
0
cracos30 Messages postés 81 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 12 avril 2013
16 déc. 2009 à 17:57
Salut
Le nom de ta fenetre n'est certainement pas bon ex pour pspad je choppe:
PSPad - [C:\Program Files\PSPad editor\1 847,83.txt]
C'est le non du titre complet qui s'affiche au moment ou elle s'ouvre sur ma machine ( casse exacte)
Tu ne l'a pas killer au moins avant ?!
Bonne prog
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
16 déc. 2009 à 18:03
voila un exemple de API guide pour les api qui fonctionne sur vb6 j'espere que sa va t'aider :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = "OpusApp"
Const gcClassnameMSExcel = "XLMAIN"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
    'Ask for a Window title
    Ret = InputBox("Enter the exact window title:" + Chr$(13) + Chr$(10) + "Note: must be an exact match")
    'Search the window
    WinWnd = FindWindow(vbNullString, Ret)
    If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
    'Show the window
    ShowWindow WinWnd, SW_SHOWNORMAL
    'Create a buffer
    lpClassName = Space(256)
    'retrieve the class name
    RetVal = GetClassName(WinWnd, lpClassName, 256)
    'Show the classname
    MsgBox "Classname: " + Left$(lpClassName, RetVal)
    'Post a message to the window to close itself
    PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub



tu doit avoir le titre de la fenêtre que tu veut afficher et pas le nom de l'exécutable ...
bonne chance
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 déc. 2009 à 18:29
pensez a adapter les delcarations a VB.Net, a savoir principalement

Long VB6 => Integer .Net

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous