Q
qsort
Гость
0
#include <GUIConstantsEx.au3>
GUICreate('My GUI Tab', 250, 150)
$tab = GUICtrlCreateTab(10, 10, 200, 100)
$tab0 = GUICtrlCreateTabItem('tab0')
$nLabel = GUICtrlCreateLabel(StringFormat('%06d', 0) & '-0', 50, 40, 110, 18)
GUICtrlSetBkColor(-1, 0x00FFFF)
GUICtrlSetFont(-1, 12, 600)
$nButton = GUICtrlCreateButton('Go', 20, 70, 50, 20)
$tab1 = GUICtrlCreateTabItem('tab1')
$tab2 = GUICtrlCreateTabItem('tab2')
GUICtrlCreateTabItem('')
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nButton
GUICtrlSetState($nButton, $GUI_DISABLE)
For $i = 1 To 1000
GUICtrlSetData($nLabel, StringFormat('%06d', Random(1000, 999999, 1)) & '-' & $i)
Sleep(20)
Next
GUICtrlSetState($nButton, $GUI_ENABLE)
EndSwitch
WEnd
В моем варианте, если использовать Вашу функцию, она вряд ли когда-нибудь вернет 0.Обычно это делается так:
Ну тогда и проблемы нет (хотя Random может повторяться ;) ).В моем варианте, если использовать Вашу функцию, она вряд ли когда-нибудь вернет 0
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
Global Const $RECEIVER_NAME = 'Tab@Server#10'
$hReceiver = GUICreate($RECEIVER_NAME)
$hForm = GUICreate('MyGUI', 400, 400)
GUICtrlCreateTab(10, 10, 380, 380)
GUICtrlCreateTabItem('Tab1')
GUICtrlCreateLabel('Label1:', 30, 50, 45, 14)
GUICtrlSetFont(-1, 8.5, 800, 0, 'MS Shell Dlg')
$Label1 = GUICtrlCreateLabel('', 76, 50, 60, 14)
GUICtrlCreateLabel('Label2:', 30, 75, 45, 14)
GUICtrlSetFont(-1, 8.5, 800, 0, 'MS Shell Dlg')
$Label2 = GUICtrlCreateLabel('', 76, 75, 60, 14)
GUICtrlCreateTabItem('Tab2')
GUICtrlCreateTabItem('Tab3')
GUICtrlCreateTabItem('')
$Dummy = GUICtrlCreateDummy()
GUIRegisterMsg($WM_COPYDATA, 'WM_COPYDATA')
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Dummy
$Data = GUICtrlRead($Dummy)
Switch BitShift($Data, 16)
Case 1
GUICtrlSetData($Label1, BitAND($Data, 0xFFFF))
Case 2
GUICtrlSetData($Label2, BitAND($Data, 0xFFFF))
Case Else
EndSwitch
EndSwitch
WEnd
Func WM_COPYDATA($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $hReceiver
GUICtrlSendToDummy($Dummy, DllStructGetData(DllStructCreate('ulong_ptr;dword;ptr', $lParam), 1))
Return 1
EndSwitch
Return 0
EndFunc ;==>WM_COPYDATA
#Include <WindowsConstants.au3>
Global Const $RECEIVER_NAME = 'Tab@Server#10'
While 1
_SendMsg(WinGetHandle($RECEIVER_NAME), 1, Random(0, 0xFFFF, 1))
Sleep(20)
WEnd
Func _SendMsg($hWnd, $iIndex, $iValue)
Local $tCOPYDATA = DllStructCreate('ulong_ptr;dword;ptr')
Local $Ret
DllStructSetData($tCOPYDATA, 1, BitOR(BitShift(BitAND($iIndex, 0xFFFF), -16), BitAND($iValue, 0xFFFF)))
DllStructSetData($tCOPYDATA, 2, 0)
DllStructSetData($tCOPYDATA, 3, 0)
$Ret = DllCall('user32.dll', 'lresult', 'SendMessage', 'hwnd', $hWnd, 'uint', $WM_COPYDATA, 'ptr', 0, 'ptr', DllStructGetPtr($tCOPYDATA))
If (@error) Or (Not $Ret[0]) Then
Return 0
EndIf
Return 1
EndFunc ;==>_SendMsg
#Include <WindowsConstants.au3>
Global Const $RECEIVER_NAME = 'Tab@Server#10'
While 1
_SendMsg(WinGetHandle($RECEIVER_NAME), 2, Random(0, 0xFFFF, 1))
Sleep(200)
WEnd
Func _SendMsg($hWnd, $iIndex, $iValue)
Local $tCOPYDATA = DllStructCreate('ulong_ptr;dword;ptr')
Local $Ret
DllStructSetData($tCOPYDATA, 1, BitOR(BitShift(BitAND($iIndex, 0xFFFF), -16), BitAND($iValue, 0xFFFF)))
DllStructSetData($tCOPYDATA, 2, 0)
DllStructSetData($tCOPYDATA, 3, 0)
$Ret = DllCall('user32.dll', 'lresult', 'SendMessage', 'hwnd', $hWnd, 'uint', $WM_COPYDATA, 'ptr', 0, 'ptr', DllStructGetPtr($tCOPYDATA))
If (@error) Or (Not $Ret[0]) Then
Return 0
EndIf
Return 1
EndFunc ;==>_SendMsg
_SendMsg(WinGetHandle($RECEIVER_NAME), 1, Random(0, 0xFFFF, 1))
Sleep(20)