Newsgroup: it.comp.lang.delphi
Titolo: EnumWindowsProc

Ciao a tutti avrei altri 2 quesiti da farvi avete qualche esempio su
EnumWindowsProc??? Ho trovato un esempio in VB, ma nn c'č verso di
convertirlo in Delphi.
Altra domanda rapida rapida. C'č una funzione per convetire una stringa in
Char??? Attualmente ho provato a pare PChar(nopmestringa), ma mi da errore.
Mi serve nel comando WinExec.
Es: WinExec('
COMMAND.COM
 /C mioprog.bat ' + (PCHAR(Edit1.Text)) ,
SW_SHOWNORMAL);'), ma nn va.L'errore che mi da č "Incopatible PChar and
String".
Cosa posso fare? Grazie e Ciao

 convertirlo in Delphi.
xche?
text non č una stringa: č una proprietą:
s := edit1.text;
...pchar(s)..
A.

 Es: WinExec('
COMMAND.COM
 /C mioprog.bat ' + (PCHAR(Edit1.Text)) ,
Eccerto, se noti WinExec nel primo parametro vuole un PChar.
Tu invece gli passi una stringa + un PChar...
fai cosě
WinExec(PChar('
COMMAND.COM
 /C mioprog.bat ' + Edit1.Text));
--
Jax

Cosa posso fare? Grazie e Ciao
Ti da errore perchč hai concatenato due stringhe, mi spiego meglio:
la somma di 
'
COMMAND.COM
 /C mioprog.bat ' + (PCHAR(Edit1.Text))
da luogo ad una stringa perchč č appunto una somma!
Scrivi cosě
PChar( '
COMMAND.COM
 /C mioprog.bat ' + Edit1.Text)
Non ho provato ma dovrebbe andare.
Ciao
Alfredo.

Grazie, avevo risolto subito dopo, infatti sospettavo che fosse una cosa del
genere. Invece grazie ancora. Vi posto un attimo il codice di emun proc ke
ho trovato in VB, potreste dirmelo in Delphi? In VB non ho mai lavorato.
Grazie e Ciao
**************** Codice in VB ****************
Public Function EnumWindowsProc(ByVal Hwnd As Long, ByVal lParam As Long) As
Boolean
    go = False
    Dim sSave As String, Ret As Long
    Ret = GetWindowTextLength(Hwnd)
    sSave = Space(Ret)
    GetWindowText Hwnd, sSave, Ret + 1
    If sSave = "" Then sSave = "{}"
    FServer.w.SendData "#wnd#" & sSave & "," & Hwnd
    Do
    DoEvents
    Loop Until go
    EnumWindowsProc = True
End Function
Public Function EnumChildProc(ByVal Hwnd As Long, ByVal lParam As Long) As
Long
    go = False
    Dim sSave As String, Ret As Long
    Ret = GetWindowTextLength(Hwnd)
    sSave = Space(Ret)
    GetWindowText Hwnd, sSave, Ret + 1
    If sSave = "" Then sSave = "{}"
    FServer.w.SendData "#chwnd#" & sSave & "," & Hwnd
    Do
    DoEvents
    Loop Until go
    EnumChildProc = True
    EnumChildProc = 1
End Function
Public Function SendWindow()
EnumWindows AddressOf EnumWindowsProc, ByVal 0&
End Function
Public Function SendChildWindow(ByVal Hwnd As Long)
EnumChildWindows Hwnd, AddressOf EnumChildProc, ByVal 0&
End Function
Public Function CloseWindow(ByVal Hwnd As Long)
PostMessage Hwnd, WM_CLOSE, 0&, 0&
End Function
Public Function ChangeWindowName(ByVal lpString As String)
Dim wn, wh
For i = 1 To Len(lpString)
If Mid(lpString, i, 1) = "," Then
GoTo 1
Else
wh = wh & Mid(lpString, i, 1)
End If
Next i
1
wn = Mid(lpString, i + 1, Len(lpString) - i)
SetWindowText wh, wn
End Function
Public Function ChangeChildWindowName(ByVal lpString As String)
Dim wn, wh
For i = 1 To Len(lpString)
If Mid(lpString, i, 1) = "," Then
GoTo 1
Else
wh = wh & Mid(lpString, i, 1)
End If
Next i
1
wn = Mid(lpString, i + 1, Len(lpString) - i)
SetWindowText wh, wn
End Function
**************** Fine almeno credo ****************