一个消息提示托盘程序的开发历程

    技术2022-05-11  76

    一个消息提示托盘程序的开发历程(采用socket技术,附源代码)二...

    一个消息提示托盘程序的开发历程(采用socket技术,附源代码)二...:

    娑堟伅鎻愮ず宸ュ叿婧愮爜锛?br>鏈嶅姟绔細msg.h/* * create date: 2004-12-01   * create by: 鏉庢槬闆?br> * purpose: 鍗忚鐢ㄨ嚜瀹氫箟娑堟伅缁撴瀯: *          messageinfo:浠诲姟娑堟伅 *          msgtype娑堟伅澶达細0xa鐧婚檰鎴愬姛,0xb鐧婚檰澶辫触,0xc宸ヤ綔娑堟伅,0xd浠诲姟缁撴潫鏍囪瘑 *          logininfo:鐧婚檰娑堟伅 */

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

            struct messageinfo{               //娑堟伅缁撴瀯           int  msgtype;                  //娑堟伅澶达細0xa鐧婚檰鎴愬姛,0xb鐧婚檰澶辫触,0xc宸ヤ綔娑堟伅,0xd浠诲姟缁撴潫鏍囪瘑           char  messageid[10];           //浠诲姟搴忓彿           char usrcode[10];              //鐢ㄦ埛甯愬彿           //char tastname[50];             //浠诲姟鍚嶇о           char tastname[200];             //浠诲姟鍚嶇о           char creattime[20];            //鏃堕棿        };

             struct logininfo{          //鐧婚檰淇℃伅                char pwd[20];       //鐢ㄦ埛瀵嗙爜                char userid[30];    //鐢ㄦ埛id        };//------------------------------------------------------------------------------

    unit1.cpp//---------------------------------------------------------------------------

    #include <vcl.h>#pragma hdrstop#include "unit1.h"#include "unit2.h"#include "msg.h"#include <inifiles.hpp>//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"tform1 *form1;string myprovider;//鏁版嵁搴撹繛鎺ュ瓧绗?br>int port;     //绔彛;//---------------------------------------------------------------------------__fastcall tform1::tform1(tcomponent* owner)        : tform(owner){                    isserver=false;                    server="localhost";}//---------------------------------------------------------------------------

    void __fastcall tform1::formcreate(tobject *sender){//char dir[max_path];//----鑾峰彇杩愯绋嬪簭鐨勭洰褰曞紑濮?br>char *tfile = "/config.ini";//灏嗙▼搴忕幇鍦ㄧ洰褰曟墍鍦ㄨ緭鍏ユ瀛楃鏁扮粍::getcurrentdirectory(max_path,dir);//灏嗙幇鍦ㄧ洰褰曞姞涓婃寚瀹氭枃浠跺悕strcat(dir,tfile);//----鑾峰彇杩愯绋嬪簭鐨勭洰褰曠粨鏉?br>tinifile  *ini = new tinifile(dir);try{  myprovider = ini->readstring("servercfg","provider","provider=oraoledb.oracle.1;password=pwsc;persist security info=true;user id=developer;data source=dl;extended properties=""");  port = ini->readinteger("servercfg","port",1555);}catch(...){  messagebox(application->handle,"璇诲彇閰嶇疆鏂囦欢config.ini澶辫触!","淇℃伅鎻愮ず!",mb_ok+mb_iconinformation+mb_systemmodal);  delete ini;}delete ini;   adoconnection1->connectionstring = myprovider;   adoconnection1->loginprompt = false;   try   {      adoconnection1->open();   }   catch(...)   {      showmessage("鏃犳硶杩炴帴鏁版嵁搴?);      return;   }

        btndisconnect->enabled=false;}//---------------------------------------------------------------------------

    void __fastcall tform1::btnlistenclick(tobject *sender){//绋嬪簭杩愯鍚庯紝濡傛灉鐢ㄦ埛鎸変笅锛傜洃鍚紓閽紝//鍒欏皢璇ョ▼搴忚涓烘湇鍔″櫒绔紝//杩欐椂搴斿皢tserversocket鐨凙ctive灞炴€ц涓篢rue锛?br>//浣挎湇鍔″櫒鑷姩杩涘叆鐩戝惉鐘舵€併€?br>    serversocket1->port = port;    serversocket1->active=true;    statusbar1->simpletext="姝e湪鐩戝惉...";    btnlisten->enabled=false;    btndisconnect->enabled=true;

    }//---------------------------------------------------------------------------void __fastcall tform1::clientsocket1connect(tobject *sender,      tcustomwinsocket *socket){//褰撶敤鎴锋彁鍑鸿繛鎺ヨ姹傚悗锛屽鎴风浼氳е鍙慜ncreate浜嬩欢锛?br>    statusbar1->simpletext="杩炴帴鍒?"+server;}//---------------------------------------------------------------------------void __fastcall tform1::serversocket1accept(tobject *sender,      tcustomwinsocket *socket){//鍦ㄦ湇鍔″櫒鎺ュ彈浜嗗鎴风殑璇锋眰鍚庝細瑙﹀彂onaccept浜嬩欢锛?br>//鍦ㄨ繖涓簨浠跺鐞嗙▼搴忎腑灏嗘爣蹇楁湇鍔″櫒绔殑鍙橀噺isserver璁句负true锛?br>    isserver=true;    statusbar1->simpletext="杩炴帴鍒?"+socket->remoteaddress;

    }//---------------------------------------------------------------------------//---- 闈為樆濉炰紶杈撴柟寮忥紝褰撳叾涓殑涓€鏂硅繘琛屽啓鎿嶄綔鏃讹紝//鍙︿竴鏂逛細瑙﹀彂onread浜嬩欢(瀹㈡埛绔?鎴朞nclientread浜嬩欢(鏈嶅姟鍣ㄧ)锛?br>void __fastcall tform1::serversocket1clientread(tobject *sender,      tcustomwinsocket *socket){logininfo *loginfo = new logininfo;socket->receivebuf(loginfo,50);  string mysql = "select yhxh from xt_yh where yhbh=";   mysql+=loginfo->userid;   mysql+=" and pwd=";   mysql+=loginfo->pwd;   mysql+="";   adoquery2->close();   adoquery2->connection = adoconnection1;   adoquery2->sql->clear();   adoquery2->sql->add(mysql);   adoquery2->open();   int num = adoquery2->recordcount;   messageinfo *loginmsg =  new messageinfo;   int msgtype;   if(num>0){        msgtype=0xa;      //ok   loginmsg->msgtype=msgtype;   }else{          msgtype=0xb;      //nobody   loginmsg->msgtype=msgtype;  }  for(int i=0;i<serversocket1->socket->activeconnections;i++){    if(serversocket1->socket->connections[i]->remoteaddress==socket->remoteaddress)         serversocket1->socket->connections[i]->sendbuf(loginmsg,244);  }  adoquery2->close();

    }//---------------------------------------------------------------------------void __fastcall tform1::btndisconnectclick(tobject *sender){serversocket1->close();btnlisten->enabled=true;btndisconnect->enabled=false;}//---------------------------------------------------------------------------void __fastcall tform1::serversocket1clientdisconnect(tobject *sender,      tcustomwinsocket *socket){statusbar1->simpletext="姝e湪鐩戝惉...";}//---------------------------------------------------------------------------void __fastcall tform1::clientsocket1disconnect(tobject *sender,      tcustomwinsocket *socket){    btnlisten->enabled=true;    btndisconnect->enabled=false;    statusbar1->simpletext="";}//---------------------------------------------------------------------------void __fastcall tform1::clientsocket1error(tobject *sender,      tcustomwinsocket *socket, terrorevent errorevent, int &errorcode){//---- 姝ゅ鍦ㄥ鎴风杩樺簲璇ュ鍔犻敊璇崟鑾锋満鍒讹紝//褰撶敤鎴疯緭鍏ユ棤鏁堢殑鏈嶅姟鍣ㄥ悕鎴栨湇鍔″櫒绔病鏈?br>//澶勪簬鐩戝惉鐘舵€佹椂鑳藉鍙婃椂缁欑敤鎴峰弽棣堜俊鎭€?br>    statusbar1->simpletext="鏃犳硶杩炴帴鍒?"+socket->remotehost;    errorcode=0;}//---------------------------------------------------------------------------

    void __fastcall tform1::timer1timer(tobject *sender){  try{  if(adoconnection1->connected){  string strmessage="";   adoquery1->close();   adoquery1->connection = adoconnection1;   adoquery1->sql->clear();   adoquery1->sql->add("select t.message_id as 搴忓彿,t.user_code as 璐d换浜? t.message_title as 浠诲姟鍚嶇о, to_char(t.create_time,yyyy-mm-dd hh24:mi) as 鏃堕棿, t.is_read as 鏄惁闃呰 from user_message t where t.is_read=f and t.task_state = assign order by t.message_id");   adoquery1->open();   messageinfo *msg =  new messageinfo;

               string  messageid;          //浠诲姟搴忓彿           string usrcode;            //鐢ㄦ埛甯愬彿           string tastname;           //浠诲姟鍚嶇о           string creattime;          //鏃堕棿              while(!adoquery1->eof){    messageid=adoquery1->fieldbyname("搴忓彿")->asstring;    usrcode=adoquery1->fieldbyname("璐d换浜?)->asstring;    tastname=adoquery1->fieldbyname("浠诲姟鍚嶇о")->asstring;    creattime=adoquery1->fieldbyname("鏃堕棿")->asstring;    msg->msgtype=0xc;    memcpy(msg->messageid,messageid.c_str(),messageid.length()+1);    memcpy(msg->usrcode,usrcode.c_str(),usrcode.length()+1);    memcpy(msg->tastname,tastname.c_str(),tastname.length()+1);    memcpy(msg->creattime,creattime.c_str(),creattime.length()+1);    //瀵瑰鎴风鍙戞秷鎭細    for(int i=0;i<serversocket1->socket->activeconnections;i++){        //serversocket1->socket->connections[i]->sendbuf(msg,94);        serversocket1->socket->connections[i]->sendbuf(msg,244);        sleep(1);     }    adoquery1->next();    }    msg->msgtype=0xd;     //缁撴潫绗﹀彿    for(int i=0;i<serversocket1->socket->activeconnections;i++){        //serversocket1->socket->connections[i]->sendbuf(msg,94);          serversocket1->socket->connections[i]->sendbuf(msg,244);          sleep(1);  //鍋?ms寰堝叧閿?br>     }    delete msg;    }else{    timer1->enabled=false;    }    }    catch(...){      application->messagebox("璁块棶鏁版嵁搴撻敊璇紒璇烽噸鏂板惎鍔ㄧ▼搴忋€?,null,mb_ok);      application->terminate();    }}

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

    void __fastcall tform1::serversocket1clienterror(tobject *sender,      tcustomwinsocket *socket, terrorevent errorevent, int &errorcode){        errorcode=0;}//---------------------------------------------------------------------------

    void __fastcall tform1::n2click(tobject *sender){ application->terminate();       }//---------------------------------------------------------------------------

    void __fastcall tform1::n3click(tobject *sender){formabout->showmodal();}//---------------------------------------------------------------------------

    unit1.h

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

    #ifndef unit1h#define unit1h//---------------------------------------------------------------------------#include <classes.hpp>#include <controls.hpp>#include <stdctrls.hpp>#include <forms.hpp>#include <comctrls.hpp>#include <extctrls.hpp>#include <scktcomp.hpp>#include <adodb.hpp>#include <db.hpp>#include <dbgrids.hpp>#include <grids.hpp>#include <menus.hpp>//---------------------------------------------------------------------------class tform1 : public tform{__published: // ide-managed components        tserversocket *serversocket1;        tpanel *panel1;        tbutton *btnlisten;        tbutton *btndisconnect;        tstatusbar *statusbar1;        tadoconnection *adoconnection1;        tadoquery *adoquery1;        tdbgrid *dbgrid1;        tdatasource *datasource1;        ttimer *timer1;        tadoquery *adoquery2;        tgroupbox *groupbox1;        tmainmenu *mainmenu1;        tmenuitem *n1;        tmenuitem *n2;        tmenuitem *n3;        tmenuitem *n4;        tmenuitem *n5;        tmenuitem *n6;        void __fastcall formcreate(tobject *sender);        void __fastcall btnlistenclick(tobject *sender);        void __fastcall clientsocket1connect(tobject *sender,          tcustomwinsocket *socket);        void __fastcall serversocket1accept(tobject *sender,          tcustomwinsocket *socket);        void __fastcall serversocket1clientread(tobject *sender,          tcustomwinsocket *socket);        void __fastcall btndisconnectclick(tobject *sender);        void __fastcall serversocket1clientdisconnect(tobject *sender,          tcustomwinsocket *socket);        void __fastcall clientsocket1disconnect(tobject *sender,          tcustomwinsocket *socket);        void __fastcall clientsocket1error(tobject *sender,          tcustomwinsocket *socket, terrorevent errorevent,          int &errorcode);        void __fastcall timer1timer(tobject *sender);        void __fastcall serversocket1clienterror(tobject *sender,          tcustomwinsocket *socket, terrorevent errorevent,          int &errorcode);        void __fastcall n2click(tobject *sender);        void __fastcall n3click(tobject *sender);private: // user declarations        bool isserver;  //鏈嶅姟鍣ㄦ爣璇?br>        string server;  //鏈嶅姟鍣↖ppublic:  // user declarations        __fastcall tform1(tcomponent* owner);};//---------------------------------------------------------------------------extern package tform1 *form1;//---------------------------------------------------------------------------#endif

    unit2.h//---------------------------------------------------------------------------

    #include <vcl.h>#pragma hdrstop

    #include "unit2.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"tformabout *formabout;//---------------------------------------------------------------------------__fastcall tformabout::tformabout(tcomponent* owner)        : tform(owner){}//---------------------------------------------------------------------------void __fastcall tformabout::button1click(tobject *sender){        modalresult = mrok;}//---------------------------------------------------------------------------

    unit2.cpp//---------------------------------------------------------------------------

    #include <vcl.h>#pragma hdrstop

    #include "unit2.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"tformabout *formabout;//---------------------------------------------------------------------------__fastcall tformabout::tformabout(tcomponent* owner)        : tform(owner){}//---------------------------------------------------------------------------void __fastcall tformabout::button1click(tobject *sender){        modalresult = mrok;}//---------------------------------------------------------------------------

    浠ヤ笂鏄湇鍔$socket绋嬪簭鍙﹀锛屾湇鍔$鐨勯厤缃枃浠禖onfig.ini鍐呭濡備笅锛?br>[servercfg]provider=provider=oraoledb.oracle.1;password=pwsc;persist security info=true;user id=developer;data source=dl;extended properties=""port=1555

     

    最新回复(0)