欢迎来到老马的领地~ 这是“压风式散热底座”发明者的个人网站:) 本人QQ:80524554,用户群1:562279766
留言列表
小宝 said:
2020-09-01 10:59:20
马老师您好:



      很高兴能在网上开到您写的文章,您写的编程文档通俗易懂,但是要提高我的编程水平还需要向老师多学习、多请教。因为编程是艰苦的脑力劳动,学无止境。



      特此,我向马老师请教一个问题:



如果用vb编写一个程序,实现如下功能应该怎样编写?



      比如:电脑屏幕上演示一个移动速度很慢的适量地图画面,画面里有很多条曲曲弯弯不规则的路线,我事先也保存过这些道路曲线的图片,这些图片里的曲线有些是跟屏幕上的某些道路曲线是相似的,那么怎样从图片文件里找出跟屏幕上道路曲线相匹配或相似度最大的那个文件?这些事先保存的文件格式有jpg、bmp或png等格式,编写此程序或许涉及到很复杂的数学算法。特此请教!

回复:你好!
这个是要做图像相似性匹配算法,一般来说是调用OpenCV之类的机器视觉库来实现,除非你对算法非常熟悉,就可以自己写这样的算法。
至于使用VB来做,如果是VB.Net的话它是可以调用OpenCV库的,VB6只有一组我很多年前收藏的DLL,其中的OpenCV版本比较老了,但也有此功能,你留个邮箱我发过去吧。
游客0001 said:
2020-08-19 09:13:44
大佬,帮忙把我账号给解封了,刚注册不知道论坛规矩hl0071
回复:已经解封。以后注意。
panda said:
2017-05-17 16:05:39
老马好:

看了你关于3D打印运动控制的分享,我想在原有的开源固件上做运动控制,能详细和你聊聊么。我的QQ:910268981。

Sincerely look forward to cooperation with you!
回复:欢迎讨论!我QQ:80524554
timdex said:
2016-10-06 09:35:00
老马哥,你好。



关于你之前发表的一编文章(VB6稳定多线程初步研究)想请教你:



你发的实例我试过确实不错。但想问下,VB6多线程如何调试?



急求解~~!



感谢!

回复:调试方面不好处理,毕竟VB6本身并未针对多线程进行设计.只能独立地把各个线程中的问题在单线程时就调试好,再进行多线程工作.而直接在IDE中进行多线程联调的话貌似不太靠谱.



老马哥:你好

关于上面的问题,请问那有什么办法可以实现:即要用到多线程也可以方便调试的?
回复:既要用到多线程也可以方便调试的,那就只能是使用VB.NET了,语法方面相差不大,基本只需要边搜边用就可以做事了.
但VB.NET是完整的另一个语言,从骨子里就是支持多线程以及多线程调试的.语法保持与VB6差不多,只是为了让VB6使用者快速过渡.
timdex said:
2016-09-28 12:04:31
老马哥,你好。

关于你之前发表的一编文章(VB6稳定多线程初步研究)想请教你:

你发的实例我试过确实不错。但想问下,VB6多线程如何调试?

急求解~~!

感谢!
回复:调试方面不好处理,毕竟VB6本身并未针对多线程进行设计.只能独立地把各个线程中的问题在单线程时就调试好,再进行多线程工作.而直接在IDE中进行多线程联调的话貌似不太靠谱.
游客 said:
2016-08-28 16:12:25
想请你开发个驱动,不知有时间没有。
回复:你好,驱动开发请找论坛里的Tesla.Angela,我不会玩驱动开发。。。。
游客 said:
2015-08-27 00:59:00
测试留言........-_-!
qq289778005 said:
2015-08-10 11:01:21
你好,我看到你有一个全局的热键例子很好,有没办法做成程序级的呀?就是只在本程序中有作用,类似菜单中设置的快捷键.
回复:你可以在热键事件到来时,判断一下自己的窗口是否是当前窗口(使用GetForegroundWindow),如果不是,则不做处理.
陈子 said:
2014-08-24 21:49:49
老马,看了你前面的那两个旧博客,看了那些日期,记录里的点点滴滴,莫名的感伤。岁月不饶人,逝者如厮夫。
回复:一点一滴都是经历,酸甜苦辣都记下来,留着老的时候慢慢翻吧:)
游客 said:
2014-07-12 10:26:14
老马你好,我以前下载过你写的winsock局域网传输文件的源码。应用中发现文件超过几十兆的时候会提示内存溢出。提示问题出在这里:
Open theFileList(i) For Binary As #1
ReDim theData(LOF(1) - 1) '问题行
Get #1, , theData
Close #1
能否请你提供联系方式和我联系下,帮我解决这个问题。必有酬谢!
回复:出现这个问题,说明你的逻辑内存中已经没有足够的连续内存可供申请.

因为我这种偷懒的办法是需要与文件同样大小的内存的,当逻辑内存的碎片化太严重时或者文件太大时,都无法完成内存申请请求的.

要解决它很简单,那就是不要偷懒,自己设计一套通讯协议,把目标文件拆成一小块一小块来收发,比如1M发一次,基本发送还是使用文章中的方案,这样就木有问题了.

另外最近比较忙,不一定有时间上QQ,请加群:32774214,注明从博客找到号码而来,管理员会通过的,里面也有很多热心的网友,他们对于会的问题,在闲的时候还是很愿意帮助别人的:)
ztkernel said:
2014-01-02 15:17:14
老马,你好,我是一个windows内核驱动的程序员和爱好者,对咱们这个论坛很感兴趣,想注册一个账号,平时学习交流技术,现在不能注册,烦请帮忙,我的邮箱hebinbin2013@hotmail.com 用户名 ztkernel
回复:你好!貌似这个用户已经存在了.你已经注册了吗?
李国强 said:
2013-12-16 10:13:46
另外,我想注册论坛,邮箱是:liguoqiangshaoye@163.com,昵称如果可以用中文的话,就是:李国强 如果不能用中文:liguoqiangshaoye 谢谢。
李国强 said:
2013-12-16 10:09:41
您好,老马,我是VB的初学者,想了解下VB中关于ActiveX EXE实现多线程的知识,能不能提供一下这方面的简单的例子?就好比说,有个主窗体,有两个线程,其中一个从1数到1000万,另一个从1数到2000万这样,然后数完之后把各自花费的时间发回到主窗体中。类似这样的简单例子就行。非常感谢!
回复:你这个需求就是多线程穷举,这个例子我以前写过,参见:

http://www.m5home.com/bak_blog/article/287.html
memory said:
2013-12-07 23:40:22
话说一对情侣挺相爱的 某天女友传来噩耗 出车祸 大出血正在抢救 男友得知 火速赶往医院医生说 女友那类型的血没了 男生说用我的跟她血型一样要多少都可以 最终女友被抢救回来了 事后他们也更加相爱可是生活总避免不了争执 某日他俩因为一小事干了起来 男生说他妈的当初要不是老子给你输血你早死了 女生沉默了下立马脱下裤子扯出她的卫生巾砸到男生头上说 老娘定期还你就是!
ffffsdfa said:
2013-11-23 13:04:35
那天在家做馒头,因为好玩就捏了个JJ,老公看了说:你捏的不像,看我的。 接下来我俩就捏了一笼的JJ,并且蒸上了。快开饭的时候,老爸来了。老公说,咱去饭店吃吧。爸不同意:饭店多贵呀,又不是别人,客气啥,有啥吃啥吧。说着过去就把笼盖掀开了……我也吐了一口
dasdfa said:
2013-11-02 04:47:47
本人妹子一枚,刚才坐地铁上,看见有个女生挺着肚子,靠在杆子上,我起来让座,结果。 。。她把肚子缩回去了。。。缩回去了。。。缩回去了。。。我一脸尴尬,那妹子估计更尴尬。。。
hy1080 said:
2013-08-08 10:21:25
老马好:想注册论坛,一直等了很久都没开放,不知道什么时候开放阿?谢谢啦!
回复:这个的话,你可以说说你的用户名和邮箱,我帮你添加,然后把初始密码发到你邮箱.
嗷嗷叫的老马 said:
2013-07-31 23:57:10
哇哈哈,看来过滤是极为有效的,看这些机器人还怎么发:P
游客 said:
2013-06-26 10:45:38
另外老马:我工作中经常向别的程序窗口(文本框)传递字串,有的框没有句柄,我都是用剪切板及粘贴来传递,但会影响系统剪切板,用变量暂存来过渡也可以,但理论上会有冲突的(我的程序在后台循环),不是最佳方案,大漠插件的 sendstring方法对有的框也会失败,用剪切板及粘贴来传递比较稳定,所以还是想做个类似系统的临时剪切板,自定义一个粘贴热键,来传递。看了你以前的贴子:
剪贴板的监视,需要先使用SetClipboardViewer设置某个句柄为剪贴板查看器的一员.

然后当剪贴板发生改变时,系统就会向这个句柄发送WM_DRAWCLIPBOARD消息.

只要使用子类化拦截到这个消息即可.
还是要清空系统剪切板。
我想问如何自己做一个临时剪切板,只我程序在运行就可以用自定义的热键粘贴
回复:你好!

关于cSubclass这个类型,实际上是一个单类模块子类化的类,是由高手PctGL写的,非常方便,参见:

http://www.m5home.com/bak_blog/article/487.html

另,请加我的群3:32774214,我在群里是管理,可以找到我的.

直接放QQ的话会有太多广告和垃圾消息,见谅:)
游客 said:
2013-06-26 10:32:17
首先好崇拜你
看到你以前的帖子 "双剪贴板监视与管理示例代码"
Private Declare Function SetClipboardViewer Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Const WM_DRAWCLIPBOARD As Long = &H308

Dim WithEvents objSC As cSubclass
运行时出错:WithEvents objSC As cSubclass未提示
引用那个
另外能否给你的QQ号:我手上有活,可以合作
游客 said:
2013-06-26 10:30:08
首先好崇拜你
看到你以前的帖子 "双剪贴板监视与管理示例代码"
Private Declare Function SetClipboardViewer Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Const WM_DRAWCLIPBOARD As Long = &H308

Dim WithEvents objSC As cSubclass
运行时出错:WithEvents objSC As cSubclass未提示
引用那个
小草 said:
2013-06-10 15:14:22
老马,看了你的VB加载.png格式图片我很佩服你
不过我有点小问题,即为什么不能把加载出来的png图片调用到image控件中?还有为什么picture box控件的autoredraw属性要设置为false?

代码我是这样写的:
Private Sub Command1_Click()
Call PaintPng(App.Path & "\1.png", Form1.Picture1.hdc, 0, 0)
Set Image1.Picture = Picture1.Picture
End Sub
回复:端午好:)

也没什么好佩服的,我的东西大多数是从网络上收集而来,你应该佩服那些真正的原作者才对:D

关于第一个问题,你试试使用Picture1.Image属性.

在AutoRedraw=True时,Picture属性是一个内存对象了,所有绘制到它上面的内容都不是立即更新到屏幕上的.

而屏幕上的对象就是Image对象了,在显示区域被遮盖,或强制调用Refresh方法时才会把Picture中的内容更新到Image上.

这样的话在某些情况下会提高性能,例如频繁绘制图像时,绘制结果都是绘制到内存中,直到屏幕需要更新时才一次性将结果更新到屏幕上,而且也不会有闪烁感.

但由于有一次更新的过程存在,如果更新画面很频繁,则反而会降低性能了.

而AutoRedraw=False时,绘制的内容直接就是向屏幕绘制,PictureBox本身不再管理被遮盖后的更新,因此如果此时发生了遮盖行为(例如被别的窗体挡住,或者最小化),图片框上绘制的结果就会消失,除非你自己在检测到遮盖事件后自己用代码再重绘.不过,一般来说这种情况下绘制的速度会提高,但会出现闪烁现象.

因此AutoRedraw是True还是False,要视自己的情况而定.
游客 said:
2013-04-19 19:07:26
大神!QQ木马病毒盗号方面的资料有没有给点了?
回复:木有啊,不研究这些东西,对不起了HOHO.
游客 said:
2013-03-31 20:06:09
回复:你需要在Set XX=Nothing前,确认线程中的任务已经执行完毕,不然就算销毁了线程对象,线程应该还是在执行的.

老马,我是用form和vb自带timer做载体的,在构造对象时代码如下
Private Sub Class_Initialize()
Set frmTmp = New FrmLogin
Load frmTmp
Set CTimer = FrmLogin.Timer1
CTimer.Enabled = False
End Sub
释放对象代码如下:
Private Sub Class_Terminate()
Set CTimer = Nothing
Unload frmTmp
Set frmTmp = Nothing
End Sub

我就单单执行创建对象set xxx=new xxxx,然后释放对象set xxx=nothing,然后就是我上次跟你说的,线程一直增加
回复:代码好象没什么问题,但是你这代码并没看到有等待ActiveX对象中的任务结束的部分.

就算你按正确的方式释放了对象,但如果对象中的任务还未完成,释放的代码可能不会生效.

最好在线程对象中的任务通知里加一个通知,以便调用者能得到线程对象中任务的状态,比如是正在执行,还是因中断而停止,或者是因完成任务而停止等.

这样,调用者在想结束时,可以先发送中断任务的指令,然后等待任务状态为"因中断而停止"或"因完成任务而停止",最后再释放线程对象.

另外还有一个很不好的做法,那就是结束线程,虽然不推荐,但这也确实是处理一个无法正确结束的线程的有效方法.

调用App.ThreadID就可以得到当前调用所在领域的线程ID,因此如果在线程对象的代码领域中调用App.ThreadID,就可以得到这个线程对象所在线程的ID,此值可以作为一个属性在每个线程对象初始化时指定,以供调用者在紧急的情况下使用TerminateThread函数来结束线程.
游客 said:
2013-03-29 10:19:38
老马好:我想问下在引用外部Active.Exe组件时,我在一个子窗体的load事件中用set new创建一个实例,在任务管理器中可以看到此Active.Exe的线程数增加了1,然后我关闭子窗体,在unload事件中set nothing销毁实例,但任务管理器中此Active.Exe的线程数并没减少,然后我重复打开子窗体,关闭子窗体的步骤,线程数不断增加,请教下,哪里出了问题?
回复:你需要在Set XX=Nothing前,确认线程中的任务已经执行完毕,不然就算销毁了线程对象,线程应该还是在执行的.
Black Storm said:
2013-02-24 17:03:04
老马你好!我想请教一个问题:我需要在VB里面调用一个C++或者其他语言写的DLL,但是直接引用是不行的。必须要用声明API的方式去调用,但是这似乎需要一个固定的路径,如果在form_load中注册DLL到system32再调用的话未尝不可,但有的用户的电脑(比如学校的还原保护系统)拒绝我访问system32,拒绝注册DLL,这就需要用loadlibrary来加载调用函数。我不知道字符串型的参数以及多个参数怎么传递进去,还望指点一二!谢谢!
回复:不需要固定路径啊,直接在声明里写DLL名称就好了,就像系统的API一样.
然后DLL放在EXE同目录或SYSTEM32都是可以的
水城人家 said:
2013-01-25 10:12:03
老马你好,我关注你的博客好久了,第一次请教问题,希望你不会嫌弃。
请问,你有关于处理TIFF文件的好东西吗? 比如纠偏、去黑边的控件啊或技巧等。因为扫描后通常会有歪斜和黑边等。谢谢。
回复:你好!

这些处理的相关东东我没有,不过你可以先尝试用PS的滤镜处理一下,看看用哪些滤镜的组合可以实现所要的效果,然后自己实现相应的滤镜.

常用的PS滤镜网上还是有不少代码的:)
myzchh said:
2013-01-23 10:41:35
DownloadDemo下载文件的那个我怎么都搞不定断点续传,能帮我下么?QQ1280197400
回复:你怎么搞的?

断点续传主要就是记录之前下载的长度,然后在发下载请求时在Range头域中指定要继续的范围即可.

比如一个文件10M,之前下载了6M,则续传时应该在Range头域中指定6M以后的内容,如:

Range:bytes=6144-

这样返回的内容就是从6144字节以后开始的了.
timguo said:
2013-01-04 15:14:39
想跟你们谈一些内核开发上的合作,方便的话,加一下我QQ 详谈:1418130832,谢谢!
游客 said:
2012-12-05 20:48:32
老马你好 "全局热键类的多热键示例工程"
Private Sub cHK_HotKeyPress(ByVal HotKeyIndex As Long, ByVal HotKey As Long, ByVal hCtrl As Boolean, ByVal hAlt As Boolean, ByVal hShift As Boolean)
Dim I As Long

For I = LBound(lHotKeyIndex) To UBound(lHotKeyIndex)
If lHotKeyIndex(I) = HotKeyIndex Then '来回切换显示
labHotKey(I).Caption = IIf(labHotKey(I).Caption <> "●", "●", "○")
End If
Next
End Sub


我希望是按下ctrl+1 弹出对话框并且显示a(msgbox"a")
按下ctrl+2 弹出对话框并且显示a(msgbox"b")
按下ctrl+3 弹出对话框并且显示a(msgbox"c")
按下ctrl+4 弹出对话框并且显示a(msgbox"d")
按下ctrl+5 弹出对话框并且显示a(msgbox"e")


请问怎么改 谢谢
回复:已邮件回复!
Phanphan said:
2012-07-26 00:05:29
老马,结石治好了吧?又有疑问来请教你了。
vb,webbrowser控件中,载入某个网页,其中有个按钮(假设为SampleBtn)灰色不可用,我可以用代码把它变成可用 WebBrowser1.Document.SampleBtn.disabled = False

现在,如果上面的按钮还有类似这样的代码:<input type="submit" name="SampleBtn" onclick="return SampleScript();" id="SampleBtn"/>。有没有办法也像上面那样改掉onclick后的值或者绕过这个事件呢,从而使按钮按下时不执行SampleScript中的代码呢?

谢谢!
回复:结石总算OK啦,谢谢!!

不过关于你的问题我要说SORRY了......这一块的东西真没啥研究,嘿嘿,不好意思!

不过CSDN上好象是见过有人做这方面的研究的,建议你去问问.
guaiwu326 said:
2012-06-10 09:33:41
老马好:在论坛中看到一个“网页SPY++”的软件,下载非常好用,的确如软件提示的“可以精确打击DOM对象进行深度分析”,连网页文本框及内容的文本、父对象、NAME/CLASSNAME/TAGNAME都能获得,想请老马给份相似功能的VB源码或这个软件的源码。不知行不?

谢谢。
回复:这个我没什么研究,不好意思!
最近得了结石,治病去了,比较少上网,不好意思!
phanphan said:
2012-04-01 00:18:07
老马,我真幸运啊,抢了沙发。
请教个问题:VB,怎么让某个控件自动弹出气泡式功能能提示?
比如,用户第一次使用软件时,按操作顺序自动在将要被操作的区域显示气泡式提示?
谢了!
回复:我在这里收藏了一个气泡类:

http://www.m5home.com/bak_blog/article/215.html

你调用它就可以了


访客留言

昵称 *

E-mail