用BCB在windows桌面创建快捷方式

用BCB在windows桌面创建快捷方式


API提供了一个叫做IShellLink的COM接口允许我们创建快捷方式。为在桌面创建快捷方式,我们创建一个IShellLink对
象,设置它的属性,然后把这个link保存到desktop目录。

下面的例子代码演示了怎样创建一个快捷方式。在这个例子里,这个快捷方式保存在C:/Drive目录下。

//----------------------------------------------------------------------
include <shlobj.h>
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(OpenDialog1->Execute())
        CreateShortCut(OpenDialog1->FileName);
}
//----------------------------------------------------------------------
void TForm1::CreateShortCut(const AnsiString &file)
{
    IShellLink* pLink;
    IPersistFile* pPersistFile;
    if(SUCCEEDED(CoInitialize(NULL)))
    {
        if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
                                      CLSCTX_INPROC_SERVER,
                                      IID_IShellLink, (void **) &pLink)))
        {
            pLink->SetPath(file.c_str());
            pLink->SetDescription("Woo hoo, look at Homer's shortcut");
            pLink->SetShowCmd(SW_SHOW);
            if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile,
                                               (void **)&pPersistFile)))
            {
                WideString strShortCutLocation("C://bcbshortcut.lnk");
                pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE);
                pPersistFile->Release();
            }
            pLink->Release();
        }
 
        CoUninitialize();
    }
}
//----------------------------------------------------------------------
上面的例子只是把快捷方式文件保存到了c:/drive目录下,但没保存到desktop目录下。

要让快捷方式出现在桌面上,只须把快捷方式文件保存到desktop目录下。首先我们要找到windows的desktop目录。一
旦我们知道了desktop所在的目录,我们就能将快捷方式文件保存到desktop目录下。然后windows就能将快捷方式图标
显示到桌面上。下面是经过改进了的例子:

//----------------------------------------------------------------------
void TForm1::CreateShortCut(const AnsiString &file)
{
    IShellLink* pLink;
    IPersistFile* pPersistFile;
    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();
                                              
    if(SUCCEEDED(CoInitialize(NULL)))
    {
        if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL,
                                      CLSCTX_INPROC_SERVER,
                                      IID_IShellLink, (void **) &pLink)))
        {
            pLink->SetPath(file.c_str());
            pLink->SetDescription("Woo hoo, look at Homer's shortcut");
            pLink->SetShowCmd(SW_SHOW);
 
            if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile,
                                               (void **)&pPersistFile)))
            {
 
                WideString strShortCutLocation(DesktopDir);
                strShortCutLocation += "//bcbshortcut.lnk";
                pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE);
                pPersistFile->Release();
            }
            pLink->Release();
        }
        CoUninitialize();
    }
}
//----------------------------------------------------------------------
不要陷于COM的泥沼之中
创建快捷方式包括一些对COM的使用。不要让你陷入到COM的复杂之中。COM只是创建和使用对象的一种方法。在这
个例子里我们可以考虑不使用COM而是用等价的C++技术。

COM code                                   C++ psuedo-equivalent
IShellLink*   pLink;                       TShellLink   *Link;
IPersistFile* pPersistFile;                TPersistFile *PersistFile;
 
CoInitialize();
 
                                          
CoCreateInstance(CLSID_ShellLink,          Link = new TShellLink;
                 NULL,
                 CLSCTX_INPROC_SERVER,
                 IID_IShellLink,
                 (void **) &pLink)
 
                                          
pLink->SetPath(file.c_str());              Link->SetPath(file.c_str());
pLink->SetShowCmd(SW_SHOW);                Link->SetShowCmd(SW_SHOW);
 
 
                                          
pLink->QueryInterface(IID_IPersistFile     PersistFile =
               (void **)&pPersistFile)))      dynamic_cast<TPersistFile*>(Link);
 
pPersistFile->Save("C://", TRUE);          PersistFile->Save("C://");
 
 
                                          
pPersistFile->Release();                   delete PersistFile
pLink->Release();                          delete Link;
 
CoUninitialize();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bcb xe7 bde 是指 Borland C++ Builder XE7 中使用 BDE(Borland Database Engine)来创建数据库。 首先,我们需要在 Borland C++ Builder XE7 中打开一个新的项目。然后,我们可以通过以下步骤来创建数据库: 1. 在项目中添加 BDE 组件: 通过点击工具栏上的 "组件" 按钮,在弹出的菜单中选择 "引入",然后选择 "BDE 数据库" 组件。这将在项目中添加 BDE 组件的支持。 2. 在项目中添加数据库表组件: 在项目窗口中,找到 BDE 面板,双击 "数据库表" 组件,即可在项目中添加一个数据库表组件。 3. 设计数据库表: 单击项目窗口左侧的 "设计" 选项卡,然后双击新添加的数据库表组件。在数据库表设计器中,我们可以添加表字段、定义数据类型、设置索引等。 4. 设置数据库连接: 单击项目窗口左侧的 "对象树" 选项卡,双击项目中的 "Database" 组件,然后在属性编辑器中设置数据库连接参数。这些参数包括数据库名称、用户名、密码等。 5. 创建表格: 在设计器中完成数据库表设计后,我们可以通过在项目中添加一个按钮组件,并在按钮的点击事件中编写代码来创建该表格。在点击按钮时,可以使用 BDE 提供的 API 函数来执行 SQL 命令,以创建数据库表。 以上就是使用 BDE 在 Borland C++ Builder XE7 中创建数据库的步骤。通过这些步骤,我们可以在项目中轻松地设计和创建数据库,并使用 Borland C++ Builder XE7 的功能来操作和管理数据库。 ### 回答2: BCB(Borland C++ Builder)是一个集成式开发环境(IDE),而XE7是BCB的一个版本。它们通常用于开发Windows平台的应用程序。 在BCB XE7中,要创建一个数据库,需要按照以下步骤进行操作: 1. 打开BCB XE7的IDE。启动后,你会看到一个“开始”页面。 2. 在“开始”页面上,选择“新建项目”或“新建”选项。这将打开“新建项目”对话框。 3. 在“新建项目”对话框中,选择“数据库”类别,并从中选择一个项目模板,例如“VCL Forms Application”模板。 4. 在选择了项目模板后,点击“下一步”按钮。这将打开一个新的对话框,用于设置项目的名称和保存位置。在这里,你可以为你的项目指定一个名称,并选择一个目录来保存项目文件。 5. 点击“完成”按钮后,BCB XE7将创建一个新的数据库项目,并在IDE中打开。 6. 在IDE中,你可以通过添加控件和代码来构建数据库应用程序。你可以使用BCB XE7的数据库组件,并编写适当的代码来连接数据库、执行查询和操作数据等。 需要注意的是,在创建数据库项目之前,你可能需要先安装和配置数据库管理系统(例如MySQL、Oracle、SQLite等),并确保数据库管理系统的服务正在运行。 总的来说,在BCB XE7中创建数据库需要通过选择项目模板,设置项目名称和保存位置来创建数据库项目,然后通过添加控件和编写代码来构建数据库应用程序。 ### 回答3: BCB XE7 BDE是Embarcadero公司开发的一个用于创建和管理数据库的工具。它是针对Borland C++ Builder XE7开发环境下使用的一种技术,可以帮助开发人员轻松地创建和管理数据库。 BCB XE7 BDE具有许多强大的功能。首先,它可以支持多种数据库管理系统,如Oracle、MySQL、SQL Server等,而且可以使用标准的SQL语言进行数据库操作。这意味着开发人员可以根据自己的需求选择适合的数据库系统,并使用熟悉的SQL语言进行开发。 此外,BCB XE7 BDE还提供了很多方便的工具和功能,例如可以通过图形界面创建和设计数据库表、字段、索引等,还可以进行数据导入和导出,以及数据备份和恢复等操作。开发人员可以快速、灵活地进行数据库建模和设计,同时还可以方便地进行数据管理和维护。 BCB XE7 BDE还支持通过编程方式进行数据库操作,它提供了丰富的API接口和组件,可以方便地在代码中进行数据库的连接、查询、更新等操作。开发人员可以根据自己的需求,使用BCB XE7 BDE提供的功能和工具进行自定义开发,从而实现更复杂和强大的数据库应用程序。 总之,BCB XE7 BDE是一种功能强大、灵活易用的数据库管理工具,它可以帮助开发人员轻松地创建和管理数据库,并提供了许多便捷的功能和工具,可以满足不同开发人员的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值