C++builder项目记录【互斥体】【桌面快捷方式】【form禁止拉伸与释放】【屏蔽WebBrowser右击】最简单实用

不让一个程序启动两次(变量不要与其他程序使用一样):

  //创建互斥量
  HANDLE hMutexWF = CreateMutex(NULL, FALSE, "WFBsNavRunOnlyOneInstance");
  if (hMutexWF == NULL || ERROR_ALREADY_EXISTS == ::GetLastError())//限制双启动
  {
	if (hMutexWF != NULL)
	{
      CloseHandle(hMutexWF);
    }
    return false;
  }

c++builder 禁止拉伸:

将Form的属性BorderStyle设成bsSingle或者bsDialog就可以了 

//屏蔽WebBrowser右击
Application-> OnMessage=AEMessage;

Form释放:

~Form()

{

Form2 = NULL;
delete Form2;//释放内存

}

或重写close()

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action   =   caFree; //new出来当然直接用delete来KO
}


桌面快捷方式建立:

//头文件
#include   <registry.hpp> 

//使用
CreateLnk(Application->ExeName , "名字");

//方法
//----------------------------------------------------------------------
void __fastcall TForm2::CreateLnk(String FilePath, String FileName) {
  LPMALLOC ShellMalloc;
  LPITEMIDLIST DesktopPidl;
  char DesktopDir[MAX_PATH];
  if (FAILED(SHGetMalloc(&ShellMalloc))) {
	return;
  }
  if (FAILED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &DesktopPidl))) {
    return;
  }
  if(!SHGetPathFromIDList(DesktopPidl, DesktopDir)) {
    ShellMalloc->Free(DesktopPidl);
    ShellMalloc->Release();
    return;
  }
  ShellMalloc->Free(DesktopPidl);
  ShellMalloc->Release();

  IShellLink* pLink;
  IPersistFile* pPersistFile;
  if (SUCCEEDED(CoInitialize(NULL))) {
	if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
	  IID_IShellLink, (void **) &pLink))) {
	  pLink->SetPath(FilePath.c_str() );
	  if (SUCCEEDED(pLink->QueryInterface(IID_IPersistFile, (void **)&pPersistFile))) {
		WideString strShortCutLocation = DesktopDir;
		strShortCutLocation += "\\"+FileName+".lnk";
		pPersistFile->Save(strShortCutLocation.c_bstr() , 0);
		pPersistFile->Release();
	  }
	  pLink->Release();
	}
	CoUninitialize();
  }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值