bcb 屏保

bcb6.0多窗体时 实现屏保功能,先隐藏应用程序里打开的窗体,模拟登录后,在将窗体显示出来


//---------------------------------------------------------------------------



#include <vcl.h>
#pragma hdrstop


#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"//屏保
#include "Unit4.h"
#include <vector.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
std::vector<HWND> vecHand;
std::vector<HWND> vecAllHand;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    bIsLock = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    Timer1->Enabled = false;
    Button1Click(Sender);
}
//---------------------------------------------------------------------------
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    char str[100];
    memset(str, 0, 100);


    vecAllHand.push_back(hwnd);
    return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char str[100];
    memset(str, 0, 100);


    EnumWindows((WNDENUMPROC)EnumWindowsProc, NULL);
    //HWND pWnd = FindWindow(NULL, "Form1");
    HWND pWnd = Application->Handle;
    if(pWnd)
    {
        DWORD dwtheadid;
        DWORD dwProcessId;
        //根据窗口得到线程ID,进程ID
        dwtheadid = GetWindowThreadProcessId(pWnd, &dwProcessId);


        //std::list<HWND> list1;
        //枚举线程的所有窗口
        //EnumThreadWindows(dwtheadid, (WNDENUMPROC)EnumThreadWndProc, (LPARAM)&list1);
        EnumThreadWindows(dwtheadid, (WNDENUMPROC)EnumThreadWndProc, (LPARAM)&vecHand);


        if (!bIsLock)
        {
            HWND pFirWnd = FindWindow(NULL, "Form1");
            for(size_t i = 0; i < vecHand.size(); ++i)
            {
                for (size_t j = 0; j < vecAllHand.size(); ++j)
                {
                    if (vecHand[i] == vecAllHand[j] && vecHand[i] != pFirWnd)
                    {
                        ShowWindow(vecHand[i], SW_HIDE);
                        GetWindowText(vecHand[i], str, sizeof(str));
                        Form1->ListBox1->Items->Add(AnsiString(str) + "隐藏");
                    }
                }
            }
            TForm3 *Form3 = new TForm3(Application);


            Form3->Left   = Form1->Left+6;
            Form3->Top    = Form1->Top + 28;//ok
            Form3->Height = Form1->ClientHeight;
            Form3->Width  = Form1->ClientWidth;




            //HWND pHand = FindWindow(NULL, "Form3");


            //SetForegroundWindow(pHand);
            Form3->Show();
        }
    }
}
//---------------------------------------------------------------------------
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam )
{   
    std::vector<HWND>* pvector = (std::vector<HWND>*)lParam;


    char str[100];
    memset(str, 0, 100);
    GetWindowText(hwnd, str, sizeof(str));
    if (AnsiString(str) == "Form1")
    {
        //return false;
    }
    pvector->push_back(hwnd);


    /*
    // 窗口是否可视
    if (!IsWindowVisible(hwnd))
    {
            //return true;
    }


    // 窗口是否可激活
    if (!IsWindowEnabled(hwnd))
    {
            //return true;
    } */


    //GetClassName(hwnd, str, sizeof(str));
    //Form1->ListBox1->Items->Add(AnsiString(str));
    return true;
}
//---------------------------------------------------------------------------




void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Application->MessageBox("勤勤是个瓜皮", "提示", MB_YESNO|MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button3Click(TObject *Sender)
{
    TForm2 *Form2 = new TForm2(NULL);
    Form2->ShowModal();
    delete Form2;
    Form2 = NULL;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Application->OnMessage = AppMessage;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
    bool flag = false;
    switch(Msg.message)
    {
        case WM_LBUTTONDOWN:
            flag = false;
            break;
        default:
            flag = true;
            break;
    }
    if (flag)
    {
        if (!Timer1->Enabled)
        {
            Timer1->Enabled = true;
        }
    }
    else
    {
        if (Timer1->Enabled)
        {
            Timer1->Enabled = false;
        }
    }
    Handled = false;
}

//---------------------------------------------------------------------------



//---------------------------------------------------------------------------


#include <vcl.h>
#pragma hdrstop


#include "Unit3.h"
#include "Unit1.h"
#include <vector.h>
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"


TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm3::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    char str[100];
    memset(str, 0, 100);
    Application->MessageBox("解锁登录", "解除锁定", MB_OK);
    HWND pFirWnd = FindWindow(NULL, "Form1");
    for(size_t i = vecHand.size(); i > 0; --i)
    {
        for (size_t j = vecAllHand.size(); j > 0; --j)
        {
            if (vecHand[i-1] == vecAllHand[j-1]  && vecHand[i] != pFirWnd)
            {
                ShowWindow(vecHand[i-1], SW_SHOW);
                GetWindowText(vecHand[i-1], str, sizeof(str));
                Form1->ListBox1->Items->Add(AnsiString(str) + "显示");
            }
        }
    }
    bIsLock = false;
    this->Close();
}
//---------------------------------------------------------------------------


void __fastcall TForm3::FormShow(TObject *Sender)
{
    bIsLock = true;
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
#include <vcl.h>
#ifndef Unit4H
#define Unit4H
#include <vector.h>


//---------------------------------------------------------------------------
extern bool bIsLock;
extern std::vector<HWND> vecHand;
extern std::vector<HWND> vecAllHand;
#endif


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.怎样在C++Builder中创建使用DLL 2.用C++Bulider在WIN.INI中保存信息 3.如何在C++Builder中检测硬件 4.C++Builder如何响应消息及自定义消息 5.利用C++ Builder开发动画DLL 6.用C++ Builder 3制作屏幕保护程序 7.TCP/IP头格式 8.UDP 9.判断windows的Desktop及其它目录 10用C++Builder创建数字签名 11用Enter 键控制焦点切换的方法 12.拦 截 Windows 消 息 13.使用CommaText 14.程序开始时先显示信息框 15.怎样获取程序的命令行参数? 16.如何监视剪贴板 17.如何使用OnIdle事件 18.用C++Builder编写串行异步通信程序 19.C++BUILDER非可视组件的消息处理技巧 20.用C++Builder 建立数据库VCL使用经验 21.用C++ Builder创建基于Internet的点对点Chat 22.用C++Builder获取应用程序图标 23.BIG5到GB的转换技术 24.C++BUILDER让你的任务栏图标动起来 25.TFORM 26.用BCB在windows桌面创建快捷方式 27.读磁片磁区 28.I/O 端口读写的实现 29.检测鼠标位置 30.令Win32 应用程序跳入系统零层 31.如何取得Memo的行和列 32.使用Sockets 33.Windows95/98下怎样隐藏应用程序不让它出现在CTRL-ALT-DEL对话框中? 34.怎样隐藏应用程序的任务条图标 35.编写自己的Ping.exe程序 36.用C++Builder在WINNT下编制一个Service 37.如何在C++ BUILDER中自动关闭WINDOWS屏保 38.显示/隐藏任务栏图标 39.信箱监视程序 40.C++Building制作闹钟 41.拨号上网IP地址的检知 42.用C++ Builder编写Tray程序 43.怎样用代码来最小化或恢复程序 44.制作主窗口显示前的版权窗口 45.判断是否已经联到 internet 46.获取登陆用户名 47.隐藏桌面图标 48.程序启动时运行 49.控制面板的调用 50.模拟键盘按键 51.让标题栏闪烁 52.启动屏幕保护 53.年月日星期的取法 54.键盘事件 55.隐藏任务栏 56.禁止关机 57.怎样以最小化方式启动程序 58.在Memo中增加一行后,如何使最后一行能显示 59.设置壁纸方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值