主题:Vfp 能不能开发多线程程序
cbl518
[专家分:57140] 发布于 2007-02-19 17:39:00
[em7] 在 Vb 中能用 Api 开发多线程程序,但我在 Vfp 中始终没能成功。
请各位高手请发表看法与实例。
最后更新于:2007-02-19 17:41:00
回复列表 (共23个回复)
11 楼
moz [专家分:37620] 发布于 2007-05-26 10:31:00
[quote]否则 windows 操作系统就会被破解。[/quote]
12 楼
cbl518 [专家分:57140] 发布于 2007-05-26 10:40:00
发布的代码,与升级和源代码绝对不同,你要用程序将你的源代码加工后发布。我一直这样做的。升级,易毒性要始终保持原样不变。
回答 11 楼:
windows 操作系统的基础就是 api 函数。就与我们编程环境中的命令是统一性质。
13 楼
moz [专家分:37620] 发布于 2007-05-26 14:12:00
记得 tanchuhan 说过,现在抄代码的比不上搬砖头的.
只靠代码生活的人除外
其他人都只是利用代码来实现自己需求,卖钱的不多.
有时间反复加密,还不如多下功夫加快程序速度,优化操作,方便管理.
对于一些讨厌的整天只想不劳而获的人,
你甚至可以不经意的加入恶意代码就是了,例如早期的3721等
另外,这世上有什么东西是别人破解不了的?
中国成千万的盗版windows是哪里来的?
中国人那么有钱每个人都用正版?
有不花钱的不用,想换个系统就掏一次钱?
另外,Windows是一群优秀的创作者的结晶.
如果有另外的一群同样的人,要完全解释Windows的代码,
他们为什么不另去做一个系统做其他研究其他技术去挣钱,
而去做完全破解Windows这些没有意义的事情,有必要吗?
这不是损人不利己,是损人又害己.
而盗版,又是另外一回事,
盗版最严重的地区在中苏印韩等地,
一是因为这些地方的人脑袋比较利害,
二是因为这些地方的人都比较懒,走的都是急功近利的路线,以小聪明去显示实力
三是因为这些地方的IT发展都不值钱,而且企业体系都落后,技术人才都得不到重视.
四是因为这些地方的人都自以为自己在为大众谋福利.
五是因为这些地方的人都比较穷,像我这样的都想不劳而获,于是有了盗版的需求.有求必有应.
windows 操作系统的基础并不就是 api 函数
API函数是系统提供给应用程序使用的共用模块,
来实现通用性,跟BIOS系统中断是一样的原理.是提供给用户使用的工具.
不懂的别瞎误导.
[quote] API是Application Programming Interface的缩写,也就是应用程序调用系统功能的接口。Windows API主要包括系统定义的函数、消息及与之相关的数据类型。我们使用各种开发工具归根结底都是和API打交道。[/quote]
[quote]API函数简介
作为一个编程初学者来说,API函数也许是一个时常耳闻却感觉有些神秘的东西。单看它的复杂语法,就足令人望而生畏,但是任何事物在我们深入了解它之前,总是会有这种感觉的。我们这篇API入门教程的目的,就是要把API函数的来龙去脉告诉大家,破除对API函数的畏惧,使它成为我们编程的好助手。
大家可能在许多书上看到过API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。[/quote]
14 楼
cbl518 [专家分:57140] 发布于 2007-05-26 14:53:00
[quote]
回答 11 楼:
windows 操作系统的基础就是 api 函数。就[color=FF0000]与我们编程环境中的命令是统一性质[/color]。[/quote]
[quote]
windows 操作系统的基础并不就是 api 函数
API函数是系统提供给应用程序使用的共用模块,
来实现通用性,跟BIOS系统中断是一样的原理.是提供给用户使用的工具.
[color=FF0000]不懂的别瞎误导[/color].
[/quote]
vfp 提供 2000 条函数和命令 和
[quote]API是Application Programming Interface的缩写,也就是应用程序调用系统功能的接口。Windows API主要包括系统定义的函数、消息及与之相关的数据类型。我们使用各种开发工具归根结底都是和API打交道。[/quote]
有区别吗?这不是基础是什么?
我谈我的看法,有怎样会“[color=FF0000]不懂的别瞎误导[/color].”
在技术的海洋中,我是不会不懂,所以才来论坛学习的,发表我的看法,这里我并没有违反游戏规则。
15 楼
Ilikefox [专家分:5770] 发布于 2007-05-27 17:21:00
首先回答是可以,其次想想有没有必要。
Calvin Hsia是领导微软VFP开发组的软件工程师(遗憾啊,解散了),他在自己的BLOG中谈到了如何在VFP中生成多线程。
http://blogs.msdn.com/calvin_hsia/archive/2006/05/11/595562.aspx
《Sample program to create multiple threads》
http://blogs.msdn.com/calvin_hsia/archive/2006/05/16/599108.aspx
《Create multiple threads from within your application》
如果希望应用程序在执行一些任务的过程中可以做其它事情而不必等待这些任务完成,那么编写一个进程外COM就可以了。具体可参考VFP的 Pool Manager 示例。
申明:本人对多线程只是粗略了解(仅限于概念),特别是看了Calvin Hsia的BLOG,怕怕了。对于进程外COM编程,只是曾经编程时,希望messagebox弹出后,后面表单上的一个数字时钟能继续走,而生成一个基于timer的进程外COM控制它罢了,技术层次低。
16 楼
cbl518 [专家分:57140] 发布于 2007-05-27 17:58:00
Ilikefox 你好:
[color=FF0000]如果希望应用程序在执行一些任务的过程中可以做其它事情而不必等待这些任务完成,那么编写一个进程外COM就可以了。[/color]
多线程关键是,主程序能控制它启动的子线程,子线程又可以共享主线程的资源,在子线程完成后,它能调用主线程的回调函数处理问题。
如果为了同时运行两三个进程,那就容易的多。用 vfp 编译的 dll 库函数,就可以同时执行不同的操作。再用计时器监视函数运行状况,那就是模拟式的多线程了。其实用计时器,可以是模拟多线程运行,这也是没办法的办法了。
以上只是我几年来的一点经验,不是很正确。只是和大家在一起讨论讨论!!!
另外 请教 vfp 怎样编译成 [size=4][color=FF0000]进程外COM。[/color][/size],希望能得到大师你的指导。
万分感激!!!
17 楼
Ilikefox [专家分:5770] 发布于 2007-05-27 22:08:00
cbl518朋友:
我有些糊涂了,竟然曾经把VCX文件在项目管理器中设置为主文件,而现在却不知当时怎么做的。把以前的例子翻出来,您可以下载看看,打开项目文件,里面有一个表单用来测试的(注意该文件应该是排除状态),还有一个mydll包含mytimer类,这个mydll被设置成主文件(应该为主文件,只是我想不起来当时如何做到的)。我用类设计器设置mytimer类为OLEPUBLIC。您可以先连编为“可执行文件”(6.0版本) 或者 “Win32可执行程序/ COM 服务程序”(6.0 SP5版本),注意文件名是mydll.exe。然后从项目管理器运行那个测试表单。
单击按钮,启动另一进程(mydll.exe)的timer,它开始把表单的Caption变大变小。
http://upload.programfan.com/upfile/200705272142221.rar
18 楼
moz [专家分:37620] 发布于 2007-05-27 22:34:00
CREATE PROJECT TstMTDLL NOWAIT
_VFP.ACTIVEPROJECT.FILES.ADD("DLLMAIN.PRG")
_VFP.ACTIVEPROJECT.BUILD("TstMTDLL.dll", 5)
CLEAR
FOR lnCounter = 1 TO 100
loTstMTDLL = NEWOBJECT("TstMTDLL.SERVER")
? "Run # " + TRANSFORM(lnCounter) + ;
" DoSelect Results: " + TRANSFORM(loTstMTDLL.DoSelect())
RELEASE loTstMTDLL
ENDFOR
以下是原贴链接
[url]http://support.microsoft.com/kb/314814/zh-cn[/url]
19 楼
cbl518 [专家分:57140] 发布于 2007-05-27 23:17:00
[quote]cbl518朋友:
我有些糊涂了,竟然曾经把VCX文件在项目管理器中设置为主文件,而现在却不知当时怎么做的。把以前的例子翻出来,您可以下载看看,打开项目文件,里面有一个表单用来测试的(注意该文件应该是排除状态),还有一个mydll包含mytimer类,这个mydll被设置成主文件(应该为主文件,只是我想不起来当时如何做到的)。我用类设计器设置mytimer类为OLEPUBLIC。您可以先连编为“可执行文件”(6.0版本) 或者 “Win32可执行程序/ COM 服务程序”(6.0 SP5版本),注意文件名是mydll.exe。然后从项目管理器运行那个测试表单。
单击按钮,启动另一进程(mydll.exe)的timer,它开始把表单的Caption变大变小。
http://upload.programfan.com/upfile/200705272142221.rar
[/quote]
Ilikefox 大师你好:
VCX文件在项目管理器中设置为主文件是对的。
表单是一个测试程序,不应该与类库编译在一起(应该是排除状态)。
它的功能是:把表单的 Caption 大写小写相互转变。
我想问当时编译的文件,还存在吗?
当时能正常运行吗?
我觉得该程序,很奇怪。
我用的是VFP 9 ;
我明天到,图书馆再查查资料,修改修改,看看能不能运行。不行我在安装 vfp6 再试。
20 楼
cbl518 [专家分:57140] 发布于 2007-06-02 08:14:00
moz 大师:
对于你的回答,因为没找到 [DLLMAIN.PRG] 文件,所以未回帖,敬请原谅,我正在找 [DLLMAIN.PRG] 文件,有结果一定告知。还请你多多帮忙。谢谢!!!
Ilikefox 大师:
我好笨啊?好几天了,居然没成功?
我来回复