首先说下小弟目前所遇到的工作中的困难 小弟是一个小县城里的医院收费员 收费员每天所做的工作大体就是 病人来了 在我刷完病人卡后 和病人说应该交费多少钱 因为医院病人繁多 每天和病人口头交流的次数达到500次 每次说话时间大概10秒甚至更长 并且在交流的同时经常发生语言上的冲突(不是我不负责而是县城老百姓素质太低在我收费的同时有许多人没有眼色 还在向我咨询各种问题 我不回答因为我怕短款 并且他们没有排队意识 医院也没有采取各种强制性的排队措施比如架设护栏。。)
因为我以前自学过计算机技术 我突发奇想 想整个收费辅助出来 大体功能就是在收费界面上按下"+"在收费笔次交易成功的同时 利用我的辅助 来提示病人本次应该交费XXXXXX元(播放声音文件实现)。 所以在这里我就想到了键盘钩子 具体代码我就不写了目前功能上弄的差不多了但是 还是有些小BUG 不知道怎么处理 大体情况描述如下:
在我按下+号的同时开始一个线程播放语音 假如说 我不小心 连续按下两次+ 就会播放两次 “ 本次应该交费XXXX ” 声音会出现重叠 我在EXE中实现线程同步可以 但是就是在 键盘钩子的回调函数中一直不知道怎么同步 我连续百度几天没有任何结果 所以我就来这来了 望大牛 大神能给于解答 或思路 还有一点 因为我8年没碰过编程了 当收银员已经把所学的知识荒废了不少 所以大牛大神们在解答的时候 不要说的太潦草 俗话说帮人帮到底送佛送到西 尽可能的给出最详细的解答 。 我实在是太困了 我已经20多个小时没睡觉了 谢谢各位了!!!
因为我以前自学过计算机技术 我突发奇想 想整个收费辅助出来 大体功能就是在收费界面上按下"+"在收费笔次交易成功的同时 利用我的辅助 来提示病人本次应该交费XXXXXX元(播放声音文件实现)。 所以在这里我就想到了键盘钩子 具体代码我就不写了目前功能上弄的差不多了但是 还是有些小BUG 不知道怎么处理 大体情况描述如下:
在我按下+号的同时开始一个线程播放语音 假如说 我不小心 连续按下两次+ 就会播放两次 “ 本次应该交费XXXX ” 声音会出现重叠 我在EXE中实现线程同步可以 但是就是在 键盘钩子的回调函数中一直不知道怎么同步 我连续百度几天没有任何结果 所以我就来这来了 望大牛 大神能给于解答 或思路 还有一点 因为我8年没碰过编程了 当收银员已经把所学的知识荒废了不少 所以大牛大神们在解答的时候 不要说的太潦草 俗话说帮人帮到底送佛送到西 尽可能的给出最详细的解答 。 我实在是太困了 我已经20多个小时没睡觉了 谢谢各位了!!!
解决方案 »
- 这种情况是谁的问题?
- 各位高手,帮帮忙!急死我了!
- TQuery 控件 如何联接数据源
- DELPHI中怎么设置才能让编译后的EXE文件可以那到其他没有D的机子里运行?
- 一个关于比较日期大小的问题,急!!! 100分
- 值得收藏--系统件开发模式大讨论整理精华
- 请教各位,如何自定义Delphi5 IDE环境得快捷键?
- 用过linux的朋友帮我看一下
- 找一个随机数生成算法吧,急用!!!谢谢各位大侠了先!!!!最好delphi的呀!
- 请问如何计算任意两个日期之间相差多少个月(2001-1-3 to 2001-3-1 = 2)
- Delphi编程关于PSafeArray类型变量数据内容的获取
- DELPHI XE7上弄安卓,运行的时候,出现一个错误
建议参考:
http://blog.csdn.net/jankercsdn/article/details/8874469另:鉴于你的播放,只有一条WAV,不存在并行播放,建议你不采用线程试试。直接控制一个媒体播放器MediaPlayer控件,(或直接使用playSound函数)当出现重复动作时,首先关闭媒体,再重新播放。这样比较方便通畅。
也可使用第三方的控件,比如多媒体函数库Bass.dll,请参阅 http://www.cnblogs.com/del/category/150851.html
aCriticalSection.Enter;
try
PlaySound(); //这里用同步播放SND_SYNC
finally
aCriticalSection.Leave;
end;
begin
if (wp=vk_ADD) and((1 shl 31) and lp=0)
then
beginthread(nil,0,@play,nil,0,Threadhandle) ;//播放音乐 音乐是由20个WAV文件组成
end;