⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 Windows系统OEM信息设置工具
💻 CPP
字号:
//---------------------------------------------------------------------------
//名称:Windows系统OEM信息设置 1.0
//作者:石书义
//环境:C++ Builder 6.0 + SuiPack_v5.8(控件) + WINXP_SP2 + Microsoft Office Access 2003
//版权:免费软件(包含代码),但是未经作者同意不得将此代码用于任何商业目的!
#include <vcl.h>
#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SUIForm"
#pragma link "SUIPageControl"
#pragma link "SUITabControl"
#pragma link "SUIStatusBar"
#pragma link "SUIButton"
#pragma link "SUIDBCtrls"
#pragma link "SUIPopupMenu"
#pragma link "trayicon"
#pragma link "SUIEdit"
#pragma link "SUIMemo"
#pragma link "SUIComboBox"
#pragma link "SUIDlg"
#pragma link "SUIURLLabel"
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
    : TForm(Owner)
{
    GetIncName() ;                                  //得到公司名称列表
    GetWinDir() ;                                   //得到系统路径
    GetOEMInfo(WinDir) ;                            //得到系统OEM信息
}
//---------------------------------------------------------------------------
//配置数据库
void TFormMain::DeployDatabase()
{
//
}
//---------------------------------------------------------------------------
//得到系统路径
void TFormMain::GetWinDir()
{
    char *dir ;
    dir = new char[20] ;
    GetWindowsDirectory(dir,20) ;
    WinDir = AnsiString(dir) + "\\system32\\" ;
    delete dir ;
}
//---------------------------------------------------------------------------
//**********************************右键菜单*********************************
//---------------------------------------------------------------------------
//显示主界面
void __fastcall TFormMain::ShowFormClick(TObject *Sender)
{
    GetOEMInfo(WinDir) ;
    Application->Restore() ;
    if(suiPageControl->ActivePage == suiTabSheetAbout)
        suiStatusBar->Panels->Items[0]->Text = suiFormMain->Caption ;
}
//---------------------------------------------------------------------------
//退出程序
void __fastcall TFormMain::ExitClick(TObject *Sender)
{
    Close() ;
}
//---------------------------------------------------------------------------
//******************************品牌OEM信息设置******************************
//---------------------------------------------------------------------------
//选择电脑的品牌
void __fastcall TFormMain::suiComboBoxIncChange(TObject *Sender)
{
    ADOTable1->First() ;
    ADOTable1->MoveBy(suiComboBoxInc->ItemIndex) ;
}
//---------------------------------------------------------------------------
//删除选定的OEM信息
void __fastcall TFormMain::suiBtnDeleteClick(TObject *Sender)
{
    if(!ADOTable1->Eof)
    {
        suiMessageDialogMain->Text = "确认删除" + DBEditInc->Text + " OEM 信息!" ;
        if(suiMessageDialogMain->ShowModal() == mrOk)
        {
            ADOTable1->Delete();
        }
    }
    suiStatusBar->Panels->Items[0]->Text = DBEditInc->Text + "OEM 信息已从数据库中删除!" ;

    GetIncName() ;
}
//---------------------------------------------------------------------------
//应用OEM信息设置
void __fastcall TFormMain::suiBtnApplyClick(TObject *Sender)
{
    suiMemoTemp->Clear() ;

    suiMemoTemp->Lines->Add("[General]");
    suiMemoTemp->Lines->Add("Manufacturer=" + suiDBEditInc->Text) ;
    suiMemoTemp->Lines->Add("Model=" + suiDBEditModel->Text) ;
    suiMemoTemp->Lines->Add("[Support Information]") ;
    for(int i = 0 ; i < suiDBMemoInfo->Lines->Count ; i ++)
        suiMemoTemp->Lines->Add("Line" + IntToStr(i+1) + "="
                   + suiDBMemoInfo->Lines->Strings[i]) ;

    suiMemoTemp->Lines->SaveToFile(WinDir + "oeminfo.ini") ;
    ADOTable1DSDesigner5->SaveToFile(WinDir + "oemlogo.bmp") ;
    
    suiStatusBar->Panels->Items[0]->Text = suiComboBoxInc->Items->Strings[suiComboBoxInc->ItemIndex]
                                          + " OEM 信息设置完成!" ;
}
//---------------------------------------------------------------------------
//得到公司名称列表
void TFormMain::GetIncName()
{
    suiComboBoxInc->Items->Clear() ;
    ADOTable1->First() ;
    for(int i = 0 ; ; i ++)
    {
        suiComboBoxInc->Items->Add(DBEditInc->Text) ;
        ADOTable1->Next() ;
        if(suiComboBoxInc->Items->operator [](i) == DBEditInc->Text)
            break ;
    }
    ADOTable1->First() ;
    suiComboBoxInc->ItemIndex = 0 ; 
}
//---------------------------------------------------------------------------
//******************************自定义OEM信息设置****************************
//---------------------------------------------------------------------------
//清除计算机OEM信息设置
void __fastcall TFormMain::suiBtnCancelClick(TObject *Sender)
{
    if(DeleteFile(WinDir + "oeminfo.ini") && DeleteFile(WinDir + "oemlogo.bmp"))
        suiStatusBar->Panels->Items[0]->Text = " OEM 设置信息清除完毕!" ;
    else
        suiStatusBar->Panels->Items[0]->Text = " 计算机没有设置 OEM 信息!" ;

    ImageLogo->Picture->Assign(NULL) ;
    GetOEMInfo(WinDir) ;
}
//---------------------------------------------------------------------------
//选择自己的LOGO
void __fastcall TFormMain::suiBtnLogoClick(TObject *Sender)
{
    if(OpenPictureDialogLogo->Execute())
    {
        ImageLogo->Picture->LoadFromFile(OpenPictureDialogLogo->FileName) ;
        GetOEMInfo(OpenPictureDialogLogo->FileName.SubString(1,OpenPictureDialogLogo->FileName.LastDelimiter("\\"))) ;
    }
}
//---------------------------------------------------------------------------
//添加自定义OEM信息到数据库
void __fastcall TFormMain::suiBtnInsertClick(TObject *Sender)
{
    if(suiInputDialogMain->ShowModal() == mrOk && suiInputDialogMain->ValueText != "")
    {
        ADOTable1->Insert() ;
        DBEditInc->Text = suiInputDialogMain->ValueText ;
        suiDBEditInc->Text = suiEditInc->Text ;
        suiDBEditModel->Text = suiEditModel->Text ;
        suiDBMemoInfo->Lines = suiMemoInfo->Lines ;
        DBImageLogo->Picture = ImageLogo->Picture ;
        ADOTable1->Insert() ;
        suiStatusBar->Panels->Items[0]->Text = "自定义 OEM 信息已添加到数据库!" ;
        GetIncName() ;
    }
}
//---------------------------------------------------------------------------
//应用自定义OEM信息设置
void __fastcall TFormMain::diyBtnApplyClick(TObject *Sender)
{
    suiMemoTemp->Clear() ;

    suiMemoTemp->Lines->Add("[General]");
    suiMemoTemp->Lines->Add("Manufacturer=" + suiEditInc->Text) ;
    suiMemoTemp->Lines->Add("Model=" + suiEditModel->Text) ;
    suiMemoTemp->Lines->Add("[Support Information]") ;
    for(int i = 0 ; i < suiMemoInfo->Lines->Count ; i ++)
        suiMemoTemp->Lines->Add("Line" + IntToStr(i+1) + "="
                   + suiMemoInfo->Lines->Strings[i]) ;

    suiMemoTemp->Lines->SaveToFile(WinDir + "oeminfo.ini") ;
    ImageLogo->Picture->SaveToFile(WinDir + "oemlogo.bmp") ;

    suiStatusBar->Panels->Items[0]->Text = "自定义 OEM 信息设置完成!" ;
    
    GetOEMInfo(WinDir) ;
}
//---------------------------------------------------------------------------
//得到系统OEM信息
void TFormMain::GetOEMInfo(String Dir)
{
    try
    {
        suiMemoTemp->Clear() ;
        suiMemoInfo->Clear() ;
        if(FileExists(Dir + "oemlogo.bmp"))
            ImageLogo->Picture->LoadFromFile(Dir + "oemlogo.bmp") ;
        if(FileExists(Dir + "oeminfo.ini"))
            suiMemoTemp->Lines->LoadFromFile(Dir + "oeminfo.ini") ;
        suiEditInc->Text = GetINIInfo("General","Manufacturer",Dir + "oeminfo.ini") ;
        suiEditModel->Text = GetINIInfo("General","Model",Dir + "oeminfo.ini") ;
        for(int i = 0 ; i < suiMemoTemp->Lines->Count ; i ++)
        {
            if(suiMemoTemp->Lines->Strings[i] == "[Support Information]")
            {
                for(int j = 1 ; j < suiMemoTemp->Lines->Count - i ; j ++)
                    suiMemoInfo->Lines->Add(GetINIInfo("Support Information","Line" + IntToStr(j),Dir + "oeminfo.ini")) ;
            }
        }
    }
    catch(Exception &exception)
    {
//        ImageLogo->Picture->Assign(NULL) ;
        suiEditInc->Text = "" ;
        suiEditModel->Text = "" ;
        suiMemoInfo->Clear() ;
    }
}
//---------------------------------------------------------------------------
//得到ini文件信息
String TFormMain::GetINIInfo(String Node,String KeyName,String IniFileName)
{
    char keyvalue[128];
    GetPrivateProfileString(
            Node.c_str(),               //[]中节的名称
            KeyName.c_str(),            //=号前的键名
            "",                         //如果没有找到字符串时,返回NULL
            keyvalue,                   //存放取得字符串
            128,                        //取得字符的允许最大长度
            IniFileName.c_str()         //.INI文件名
    );
    return AnsiString(keyvalue) ;
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -