posts - 138,  comments - 384,  trackbacks - 0
C++Builder
【转载】dotnet 线程同步
摘要: 原文:http://www.cnblogs.com/seerlin/archive/2009/03/10/1407478.html 第二部分:线程同步基础 同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具: 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join...阅读全文
posted @ 2011-12-13 16:47 81 阅读(37) | 评论 (0) 编辑
“不支持一个STA线程上针对多个句柄的WaitAll。”的解决方案
摘要: 今天写多线程程序,使用WaitAll时出了这个错误,在网上查找后得出原因是[MTAThread]和[STAThread]的区别,这是个线程模型的问题,大概明白一些,但也不是很透彻,因为是程序比较大,也不愿意随便修改什么。 转念一想,干嘛非要WaitAll啊,直接用:foreach(var v in [。。]) v.WaitOne();不就ok了吗!阅读全文
posted @ 2011-12-12 19:26 81 阅读(84) | 评论 (0) 编辑
C++Builder2010多线程调用WebService的问题
摘要: 在主程序中调用WebService没有问题,但在辅助线程中调用时会出现:尚未调用 CoInitialize 错误。解决方法:在调用前增加代码:CoInitialize(NULL);在调用后增加代码:CoUninitialize();阅读全文
posted @ 2011-03-21 21:50 81 阅读(74) | 评论 (0) 编辑
C++Builder调用其他dll
摘要: 1. implib 生成lib文件2. 声明函数 extern "C" int __stdcall GetNetCardCount(); 说明: 声明方式根据dll中定义可能有所变化。阅读全文
posted @ 2011-02-22 19:15 81 阅读(29) | 评论 (0) 编辑
设置进程优先级
摘要: //取得本进程id HANDLE hProcess = GetCurrentProcess(); //设置本进程的优先级 int stat = SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS);阅读全文
posted @ 2011-02-18 20:49 81 阅读(34) | 评论 (0) 编辑
重新启动C++Builder
摘要: 最开始接触电脑时还是软盘启动的好像是什么PC机,语言好像是QBasic、dBase3。几年后决心学习编程时已是vb4,有次在书店里闲逛时还看到有人买vb3的书,清楚地记得那人说了句话:把这个学好就行了。 在学vb的同时,还学了些C,工具用的是TC2,不过TC2做不了Windows程序,自然就用了BCB,那时还是BCB3,用BCB主要是受一位朋友的影响,因为他也是用这个。就这样在工作中一直用vb和bcb,从vb4用到vb6,从bcb3用到bcb6。 从2003年开始转到C#上开发,原生的编程语言基本淡出了视野。在这个过程中,vb6之后变成了vb.net,bcb从6.0之后就没有7,8,9等,经阅读全文
posted @ 2011-02-09 13:33 81 阅读(83) | 评论 (0) 编辑
同步执行其他程序(dos命令)
摘要: 1. 调用标准system函数,如:system("net stop bservices");2. 使用WaitForSingleObject函数:void exec(AnsiString cmd){ STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(STARTUPINFO);PROCESS_INFORMATION pi;BOOL res = CreateProcess(NULL,cmd.c_str(), // 执行你的 dos 命令NULL,NULL,NULL,NORMAL_PRIORITY_CLASS | CREATE_阅读全文
posted @ 2011-02-01 09:27 81 阅读(32) | 评论 (0) 编辑
判断系统是否已登录
摘要: Windows程序随系统启动而运行,并不需用户登录,在服务程序中如果想判断OS是否已有用户登录,怎么办呢?一个简单的方法是查询OS中是否已有“任务栏”窗口:HWND__ *wnd = FindWindow("Shell_TrayWnd", NULL);如果wnd==NULL则未登录。阅读全文
posted @ 2011-02-01 09:08 81 阅读(21) | 评论 (0) 编辑
服务程序的注册、启动、停止、删除
摘要: char *SNAME = "Service1";//---------------------------------------------------------------------------void __fastcall TForm2::Button1Click(TObject *Sender){ SC_HANDLE scm=OpenSCManager(NULL,NULL, SC_MANAGER_CREATE_SERVICE); if (scm!=NULL){ SC_HANDLE svc=CreateService(scm, SNAME, SNAME,//Service名字 SE阅读全文
posted @ 2011-01-28 14:37 81 阅读(28) | 评论 (0) 编辑
C++Builder2010创建线程
摘要: New菜单项中有专门的线程模板,以下是模板生成的cpp:__fastcall myt::myt(bool CreateSuspended) : TThread(CreateSuspended){ FreeOnTerminate=true;}void __fastcall myt::xx(){ //---- Place thread code here ---- for(int i=1;i <4;i++) Form1->Edit3->Text = Form1->Edit3->Text+"我得" + this->xxx;}//-----------------------------------阅读全文
posted @ 2011-01-28 12:47 81 阅读(32) | 评论 (0) 编辑
列举Windows服务
摘要: [代码]以上代码需引用winsvc.h文件,为C++Builder2010编写,基本就是两个api,但不知为何所有的服务都列出来的,单单就是我用C++Builder2010写的一个服务程序无法找到??阅读全文
posted @ 2011-01-26 10:40 81 阅读(135) | 评论 (0) 编辑