(求助)vb 模拟键盘↓向下键
要求:最小化后也能正常 窗体画一个command1 跟一个 时间控件。 当5秒后自动按command1(command1对应的是键盘↓向下键)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~下面的代码 最小化窗体后就不行了
Private Sub Command1_Click()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub Private Sub Timer1_Timer()
Timer1.Enabled = False
SendKeys ("{DOWN}") '对应的是键盘↓向下键
End Sub
要求:最小化后也能正常 窗体画一个command1 跟一个 时间控件。 当5秒后自动按command1(command1对应的是键盘↓向下键)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~下面的代码 最小化窗体后就不行了
Private Sub Command1_Click()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub Private Sub Timer1_Timer()
Timer1.Enabled = False
SendKeys ("{DOWN}") '对应的是键盘↓向下键
End Sub
biYPelsPerMeter As Long '目标设备的垂直分辨率
biClrUsed As Long '使用的颜色数
biClrImportant As Long '重要的颜色数。如果该项为0,表示所有颜色都是重要的
End Type
Private Type RGBQUAD '只有bibitcount为1,2,4时才有调色板
Blue As Byte '蓝色分量
Green As Byte '绿色分量
Red As Byte '红色分量
Reserved As Byte '保留值
End TypePrivate Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As RGBQUAD
End Type
Private Const BI_RGB = 0&
Private Const DIB_RGB_COLORS = 0&
Private Declare Function SetDIBits Lib "gdi32" (ByVal Hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As LongPrivate Sub CmdOpen_Click()
Dim Data(499, 499) As RGBQUAD
Dim MinX As Single, MaxX As Single
Dim MinY As Single, MaxY As Single
Dim StartR As Single, StartI As Single
Dim MaxIterations As Long, MaxDistance As Long
Dim ColorGradient As Double, BaseBlue As Byte
Dim BaseRed As Byte, BaseGreen As Byte
Dim i As Long, j As Long
Dim k As Long, Temp As Long
Dim dX As Single, dY As Single
Dim cX As Single, cY As Single
Dim x As Single, y As Single
Dim XX As Single, YY As Single
Dim T As Long
Dim BmpInfo As BITMAPINFO
T = GetTickCount
MinX = -2.1: MaxX = 2.1
MinY = -1.2: MaxY = 1.2
MaxIterations = 10
MaxDistance = 1000
ColorGradient = -0.05
BaseRed = 150
BaseGreen = 250
BaseBlue = 50
SpeedBlue = 2 * BaseRed - 256
SpeedGreen = 2 * BaseBlue - 256
SpeedRed = 2 * BaseGreen - 256
PowColorGradient = 2 ^ ColorGradient
'Mandelbrot集合可以用复二次多项式f(z) = z ^ 2 + c来定义.
'其中c是一个复参数。对于每一个c,从z=0开始对f(z)进行迭代
'序列 (0, f(0), f(f(0)), f(f(f(0))), .......)的值或者延伸到无限大
'或者只停留在有限半径的圆盘内。 dX = (MaxX - MinX) / 500
dY = (MaxY - MinY) / 500
For i = 0 To 499
cX = MinX + i * dX 'C的X分量
For j = 0 To 499
cY = MinY + j * dY 'C的Y分量
x = StartR
y = StartI
For m = 1 To MaxIterations
XX = x * x - y * y + cX 'Z^2+C的实部
y = 2 * x * y + cY 'Z^2+C的虚部
R = XX * XX + y * y 'Z^2+C与原点的距离
If R > MaxDistance Then H = m: Exit For
x = XX '更新
Next
If m = MaxIterations + 1 And R < MaxDistance Then H = R
Speed = Log(H * H + 0.000001) * PowColorGradient '这下面的都是显示颜色的代码,可根据情况更改
Data(i, j).Blue = Abs(Abs(BaseBlue - SpeedBlue * Speed + j + i) Mod 510 - 255)
Data(i, j).Green = Abs(Abs(BaseGreen - SpeedGreen * Speed + j + i) Mod 510 - 255)
Data(i, j).Red = Abs(Abs(BaseRed - SpeedRed * Speed + j + i) Mod 510 - 255)
Next
Next
With BmpInfo.bmiHeader
.biSize = Len(BmpInfo.bmiHeader)
.biWidth = 500
.biHeight = -500 'BMP位图默认的扫描方式是从下到上,
'这与GDI的坐标系统相反,为方便,这里
'改为-值,则取得数据就是以左上角为起点
.biPlanes = 1
.biBitCount = 32 '32位位图,默认情况下Windows不会处理最高8位
'可以将它作为自己的Alpha通道,取为32位位图,
'虽然多占用了点内存,但是避免了扫描行宽度问题,代码易于理解
.biCompression = BI_RGB '无压缩
.biSizeImage = 500 * CLng(500) * 4
End With
SetDIBits Pic.Hdc, Pic.Image, 0, 500, Data(0, 0), BmpInfo, DIB_RGB_COLORS
Pic.Refresh
Me.Caption = GetTickCount - T
End SubPrivate Sub Form_Load()
Me.ScaleMode = 3
Pic.Width = 500
Pic.Height = 500
Pic.ScaleMode = 3
3 楼的sihonglaoren 你代码我不是很明白,加我QQ858882656详聊,10元报酬
Form1.Command1_Click
呢