我自己测试了一下,在2000和xp下能显示新式对话框,不过不能使用bcb中的组件,只能自己调用api函数,再一次说明了api函数的强大.我的程序如下,希望大家指教.
//main.h
//---------------------------------------------------------------------------
#ifndef mainH
#define mainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Dialogs.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TPanel *Panel1;
TMemo *Memo1;
TPanel *Panel2;
TGrouPBox *GroupBox1;
TCheckBox *CheckBox1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall CheckBox1Click(TObject *Sender);
private: // User declarations
public: // User declarations
LPOPENFILENAMEA pOpenFile;
BYTE *pBuf;
__fastcall TForm1(TComponent* Owner);
void __fastcall DisplayInMemo(String str);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//main.c
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String str;
BOOL bReturn = GetOpenFileName(pOpenFile);
if(bReturn)
{
str.sprintf( "您选择的文件为%s",pOpenFile->lpstrFile);
DisplayInMemo(str);
}else{
str.sprintf( "您没有选择的文件");
DisplayInMemo(str);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
String str;
pBuf =(BYTE *)malloc(1024);
memset(pBuf,0,1024);
pBuf = "*.txt";
pOpenFile = (LPOPENFILENAMEA)malloc(sizeof(OPENFILENAMEA));
memset(pOpenFile,0,sizeof(OPENFILENAMEA));
pOpenFile- >lStructSize = sizeof(OPENFILENAMEA);
pOpenFile- >hwndOwner = Handle;
pOpenFile- >hInstance = HInstance;
pOpenFile- >lpstrFilter = "文本文件(*.txt)";
pOpenFile- >nFilterIndex = 0;
pOpenFile- >nMaxFile = 255;
pOpenFile- >Flags = OFN_EXPLORER;
pOpenFile- >lpstrFile = pBuf;
pOpenFile- >lpstrTitle = "我的文件对话框";
pOpenFile- >lpstrInitialDir = ".//";
//pOpenFile- >
str.sprintf( "显示2000样式对话框演示");
DisplayInMemo(str);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
free((void *)pOpenFile);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DisplayInMemo(String str)
{
if(Memo1- >Lines->Count > 100){
Memo1- >Lines->Clear();
}
Memo1- >Text = str + char(13) + char(10) + Memo1->Text;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if(CheckBox1- >Checked){
pOpenFile- >Flags |= OFN_READONLY;
}else{
pOpenFile- >Flags &= !OFN_READONLY;
}
}
//---------------------------------------------------------------------------
在bcb5测试通过.
如何屏蔽系统ALT+F4
第一步:在你的密码窗口的头文件的 public部分加上以下两段代码:
//这是自定义响应消息的函数:
void __fastcall OnCloseForm(TMessage Message);
//定义一个消息域:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, OnCloseForm)
END_MESSAGE_MAP(TForm)
第二步:在密码窗口的代码中增加此函数的实现:(注 TfWelcome 是密码窗口的名字,改成你自己的密码窗口名称)
void __fastcall TfWelcome::OnCloseForm(TMessage Message)
{
if(Message.WParam==SC_CLOSE){
//此消息拦截是为了防止用户关闭登录窗口 。
if(Application- >MessageBox(" 您确实要关闭本系统?”。","金浪软件提醒",48|1)==1){
Application- >Terminate();//如果用户选择“是”,就关闭整个程序。
}
}
}
说明:这样用户无论如何都关不了你的密码窗口了,要关就把整个程序关了。
调用API函数NetBios来获得网卡物理地址
本程序是调用API函数NetBios来获得网卡物理地址的。
//Get MAC Address
//Proto: bool MAC(char *Mac);
//return: true if success and Mac is MAC address,
// false if fail.
//
bool MAC(char *Mac)
{
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, *PASTAT;
ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
char tmp[40];
Mac[0]='/0';
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
uRetCode = Netbios( &ncb );
if (uRetCode!=0)
{
strcat(Mac, "Init Error!");
return false;
}
memset(&ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
strcpy((char *)ncb.ncb_callname, "* " );//这个"*"代表获得本机网卡地址,换成IP地址就可以获得局域网内其他机器的网卡地址。
ncb.ncb_buffer =(unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios( &ncb );
if ( uRetCode == 0 )
{
for(int i=0;i <6;i++)
{
sprintf(tmp, "%02X ",(int)Adapter.adapt.adapter_address[i]);
strcat(Mac,tmp);
}
sprintf(tmp," Software: %d.%d",Adapter.adapt.rev_major,Adapter.adapt.rev_minor);
strcat(Mac,tmp);
return true;
}
else
{
strcat(Mac,"Unknown.");
return false;
}
}
细说3721网络实名“病毒”(人家用C++写的)
最近浏览一些门户网站时,会不知不觉的被安装上一个名为“3721网络实名”的IE插件。虽说这些门户网站和3721本是好意,可是这样单方面地安装上这么一个插件有点不妥!之所以说它是病毒,因为它同样是开机自动启动,而且虽然带来 一些方便,但是使系统运行的极不稳定,拖慢上网速度。在s8s8.net的论坛上看 到很多网友都说关机时经常会出现 explorer.exe 出错的提示。我也是同样深受 其害,仔细研究了一下,问题就出在这个“3721网络实名”上!更可气的是,可能是由于程序做的比较仓促,完全没有卸载功能!
这里附上它的源代码,通过代码可以看出这不是木马。不过程序写的很烂……
#include "windows.h"
#include "winbase.h"
void main()
{
char buf[MAX_PATH];
::ZeroMemory(buf, MAX_PATH);
::GetWindowsDirectory(buf, MAX_PATH);
char filename[MAX_PATH];
::ZeroMemory(filename, MAX_PATH);
strcpy(filename, buf);
strcat(filename, "//Downloaded Program Files//CnsMinIO.dll");
::MoveFileEx(filename, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
::ZeroMemory(filename, MAX_PATH);
strcpy(filename, buf);
strcat(filename, "//Downloaded Program Files//CnsMin.dll");
::MoveFileEx(filename, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
::ZeroMemory(filename, MAX_PATH);
strcpy(filename, buf);
strcat(filename, "//Downloaded Program Files//cnsio.dll");
::MoveFileEx(filename, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
}
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。