注册 登录
编程论坛 VB6论坛

第一天接触VB6,要编一个程序。限时2天。完成不了老板炒鱿鱼。

菜鸟的梦 发布于 2012-11-28 19:57, 1396 次点击
以前没玩过VB6,俺本是做MAX效果图的。可是老板下了任务,要我做个程序。一堆一堆的码,我都看不懂。赶鸭子上架啊!!这不刚下载了VB6,运气好,安装成功了。

不废话了,老板的要求是这样的。他要一个EXE文件,运行这个文件,在C:盘的WINDOWS下创建一个文件,把序列号写进去,展名是.dat。运行这个EXE的时候,要求不蹦出窗口。2天能完成吗?大家救我


大家一定要帮我。我启动VB6后,要新建什么文件啊?是“标准EXE”还是“ActiveX EXE”呢?

[ 本帖最后由 菜鸟的梦 于 2012-11-29 19:24 编辑 ]
19 回复
#2
菜鸟的梦2012-11-28 19:59
要求不蹦出窗口,应该选择“标准EXE”还是“ActiveX EXE”呢?
#3
菜鸟的梦2012-11-28 20:09
这是刚找的代码,大家看对不对啊?
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem In colItems
Print "Processor Id: " & objItem.ProcessorId
Next
#4
菜鸟的梦2012-11-28 20:22
共有24人关注本贴,没人回复
#5
青春无限2012-11-28 21:38
看看
#6
风吹过b2012-11-28 21:54
strComputer = "."                                                               '字符变量,置 内容为 .
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")      '这个要百度。创建 wmi 服务对象
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")         '这个也要百度,在 wmi 中查询指定的对象,生成集合。查询是使用SQL命令查询
For Each objItem In colItems         '使用 FOR 循环来遍类集合
Print "Processor Id: " & objItem.ProcessorId        '在窗体上输出集合的内容。
Next             '循环结束

================
创建标准exe ,然后 放一个按钮,双击按钮,把这些代码 放进去,按下 f5 执行,然后单击按钮,如果出现是你所希望的结果,那把代码复制下。继续下一步。

重新创建一个标准exe ,然后 ,添加一个模块文件,移除窗体文件。
写代码:
sub main()
你的代码

end sub

-------
代码需要修改的地方:
1、打开文件,在 for 前面加一行。
open "c:\windows\文件名.dat"  for  Output as #1
我忘记了这样可不可以。
open "%windir%\文件名.dat"  for  Output as #1
2、print 这句要修改一下。
改为 print #1,原来的内容
3、关闭文件,在 next 后面加一行。
close #1
#7
wp2319572012-11-28 21:55
cpu序列号  不是那么好弄得吧
#8
菜鸟的梦2012-11-28 22:03
回复 6楼 风吹过b
谢谢斑竹的回复。我现在弄出点门道了。是通过两个按钮实现的。按下第一个按钮,抓取CPU成功。按下第二个按钮,写文件成功。但是还有问题。下面是代码:
Private Sub Command1_Click()
MsgBox GetCpu
End Sub
Public Function GetCpu() As String
On Error Resume Next
Dim TmpCode$
Dim ObjWMIService As Object, objItem As Object, colItems As Object
Set ObjWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = ObjWMIService.ExecQuery("Select * from Win32_Processor", , 48)
For Each objItem In colItems
TmpCode = TmpCode & " " & objItem.ProcessorId
Next
GetCpu = Trim(TmpCode)
End Function
Private Sub Command2_Click()
Open "F:\aa.dat" For Output As #1
Write #1, GetCpu
Close #1
End Sub

问题是:1.按下第一个按钮后,抓到CPU的序列号的时候,电脑会“嘟”一身,并且会弹出一个方块,把抓到序列号显示出来了。怎样去掉“嘟”声?怎样不弹出这个方块呢?还望斑竹伸出援手啊!

#9
菜鸟的梦2012-11-28 23:20
问题解决了。我不用MsgBox了,用Dim,就不弹出窗体也就不“嘟”一声了。

还剩最后一个问题要解决。现在是通过按钮实现的:按下按钮抓序列号,再按下按钮写文件。怎样不通过按钮,运行程序就自动抓序列号、抓完自动写文件?写完自动关闭程序?大家教教我吧
#10
wp2319572012-11-28 23:23
搜搜vb 控制台程序  
vb下能不能写控制台程序还真不清楚
#11
菜鸟的梦2012-11-29 00:05
回复 10楼 wp231957
我想,不用按钮实现肯定能达到,而且不复杂。因为我接触过AS3语言,很方便的。但是没有接触过VB。抓瞎了,什么也看不懂。斑竹帮我想想办法。最终的目的是没有窗口,没有按钮,程序运行完没事了,用户都没察觉。
#12
bczgvip2012-11-29 01:43
建个模块输入
sub Main() '在修改入口就行了。
#13
z668888882012-11-29 08:27
6楼正解,只把所有运行在 load 中就行了,运行了自己end 一下就完结了,前面加个 from.hide  隐了自己。就不显了。原来VB6做服务很麻烦,还有时出些小问题,就用这种方式做了个伪服务,还不错,能用。
#14
阿亨2012-11-29 09:04
回复 9楼 菜鸟的梦
还要自动关闭程序啊?要是手动关闭的话可以试下unload事件
#15
阿亨2012-11-29 09:12
回复 11楼 菜鸟的梦
Private Sub Form_Load()
你的代码
End
End Sub
#16
菜鸟的梦2012-11-29 17:43
你好,谢谢你的回复。现在的问题是先解决非得要按按钮才执行的问题。我想不按按钮让它自动执行。目前的状况是这样的,窗体中有2个按钮,代码窗口中是下面的语句:
Private Sub Command1_Click()
Dim GetCpu
End Sub

Public Function GetCpu() As String
On Error Resume Next
Dim TmpCode$
Dim ObjWMIService As Object, objItem As Object, colItems As Object
Set ObjWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = ObjWMIService.ExecQuery("Select * from Win32_Processor", , 48)
For Each objItem In colItems
TmpCode = TmpCode & " " & objItem.ProcessorId
Next
GetCpu = Trim(TmpCode)
End Function


Private Sub Command2_Click()
Open "F:\aa.dat" For Output As #1
Write #1, GetCpu
Close #1
End Sub
麻烦你给看看怎样去掉按钮,让它自动运行?
#17
菜鸟的梦2012-11-29 17:46
回复 15楼 阿亨
再麻烦你给看看16楼的问题。怎么改一下。
#18
菜鸟的梦2012-11-29 17:46
回复 13楼 z66888888
再麻烦你给看看怎样去掉按钮,让它自动运行?
#19
菜鸟的梦2012-11-29 17:47
回复 12楼 bczgvip
再麻烦你给看看16楼的问题,怎么去掉按钮,让它自动运行,怎么改一下。谢了。
#20
菜鸟的梦2012-11-29 19:20
谢谢参与本贴的各位兄弟。问题都解决了。祝你们今年都走红红地桃花运!结贴啦
1