Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1716 connectés 

  FORUM HardWare.fr
  Programmation

  [VB6] API

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB6] API

n°21722
Bendes
Posté le 02-04-2001 à 09:51:48  profilanswer
 

Voici mon code :
 
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
 
Public Function TaskExists(ByVal strCheckTask As String) As Boolean
Dim CurrWnd As Long
Dim Length As Long
Dim TaskName As String
TaskExists = False
CurrWnd = GetActiveWindow()
Do While (CurrWnd <> 0)
 Length = GetWindowTextLength(CurrWnd)
 TaskName = Space(Length + 1)
 Length = GetWindowText(CurrWnd, TaskName, Length + 1)
 TaskName = Left(TaskName, Len(TaskName) - 1)
 If (Length > 0) Then
  If InStr(1, TaskName, strCheckTask, vbTextCompare) <> 0 Then
   TaskExists = True
   Exit Do
  End If
 End If
 CurrWnd = GetWindow(CurrWnd, 2) '\2 = next window handle
Loop
End Function
 
Cette fonction permet de savoir mon l'application est déjà démarrer ou pas (via API)
 
Le prob est que sous environement VB ça marche nickel, ms qd je créé l'exécutable, ça marche plus, POURQUOIIII??? :(:(:(:(:(

mood
Publicité
Posté le 02-04-2001 à 09:51:48  profilanswer
 

n°21733
Bendes
Posté le 02-04-2001 à 10:18:12  profilanswer
 

Personne...:(
 
C'est vrai que c'est bizarre comme comportement, et je ne vois pas du tout d'où ça peut venir....

n°21751
mid
Posté le 02-04-2001 à 11:31:24  profilanswer
 

J'essayé ton code, ca me fais pareil.
Voici ce que j'ai trouvé qui marche (faut le convertir pour que ca fasse la même chose)
 
Private Declare Function RecupLaFenetre Lib "user32" Alias "GetWindow" _
                        (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function RecupLePidDuPapa Lib "user32" Alias "GetParent" _
                                              (ByVal hwnd As Long) As Long
Private Declare Function RecupLaLongueurDeLeTexte Lib "user32" Alias _
                   "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function RecupLeTexte Lib "user32" Alias "GetWindowTextA" _
  (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function ModifLeTexte Lib "user32" Alias "SetWindowTextA" _
                     (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessageA Lib "user32" (ByVal hwnd As Integer, _
      ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
 
 
Sub LoadTaskList()
 Dim CurrWnd As Long
 Dim LongueurDeLeNom As Long
 Dim TaskName As String
 Dim Parent As Long
 
 CurrWnd = RecupLaFenetre(frm_principale.hwnd, 0)
 gIndex = 0
 While CurrWnd <> 0
  Parent = RecupLePidDuPapa(CurrWnd)
  LongueurDeLeNom = RecupLaLongueurDeLeTexte(CurrWnd)
  TaskName = Space$(LongueurDeLeNom + 1)
  Length = RecupLeTexte(CurrWnd, TaskName, LongueurDeLeNom + 1)
  TaskName = Left$(TaskName, Len(TaskName) - 1)
  If Length > 0 And gIndex < 200 Then
   'If TaskName <> Me.Caption Then
   frm_principale.List1.AddItem TaskName
   gIndex = gIndex + 1
  End If
  CurrWnd = RecupLaFenetre(CurrWnd, 2)
  DoEvents
 Wend
End Sub

n°21752
mid
Posté le 02-04-2001 à 11:34:47  profilanswer
 

La seul différence ca à l'air d'être :
 
CurrWnd = RecupLaFenetre(frm_principale.hwnd, 0)

n°21756
Bendes
Posté le 02-04-2001 à 11:47:50  profilanswer
 

Thx, j'vais tester ça...

n°21804
Bendes
Posté le 02-04-2001 à 14:37:34  profilanswer
 

C'est bon, en employant juste l'API "FindWindow" j'ai juste ce qu'il me faut, ça marche avec l'exécutable et il y a moins de ligne de code...;)
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
if FindWindow(vbNullString, "Mon appli" ) = 0 then Launch

n°21877
_GrEgY_
Posté le 02-04-2001 à 19:59:24  profilanswer
 

pq tu ne prends pas Me.parent.hwnd   tu as le handle parent de ta fenetre pas besoin de passer par des api...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [VB6] API

 

Sujets relatifs
Fonction VB6...Base de registre avec VB6...
[VB6] Lisser une courbe URGENTISSIME c'est pour 21 heures[VB6] ... et les modems !
pb de compilation API c++ sous slakwareVB6 - Microsoft Maskedit Control
VB6 : pointeurs ... comment on fait ...[VB6 ]convertir un tableau de byte en tableau d'integer
[VB6] Winsock et Proxy[VB6] Imprimer un picture box en élargissant au max
Plus de sujets relatifs à : [VB6] API


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR