C/S 模块文件的调用

26 篇文章 0 订阅
14 篇文章 1 订阅

C/S 模块文件的调用

     我在调用模块时,为保障用户使用顺畅,只能调用一个模块。打开一个模块,其它模块自动关闭。因此,使用时,不能同时查看所有的窗口,很不方便。近期脑洞一开,可否同时调用二个模块,这样,软件可以以一个模块为主,再调用一个模块,这样就可以浏览全部窗口了,试用一下很好用。经验分享:

      前期说明:

     一、结构

     C/S模式下,模块文件,本人喜欢使用,以下格式:

UpLoad.exe        // 下载更新EXE

Main.exe         // 主程序   

UpLosdFirst.exe     // 下载UpLoad.exe

↓                    ↓                                       ↓

M1.exe     M2.exe      ........               Mn.exe

     这样,可以快速更新全体EXE以及配套文件。使用上功能全面,界面细至友好,不象B/S选择浏览器,还不断地出现问题。

     上图,是查看内存中的二个模块(线程)。 

     这样,让C/S程序,能够更加好用,实现调用全部的窗口的目的。

   二、模块的组成

    软件中,涉及的模块达30多个,窗口有200-300多个,包含某业务的全部制度和台账的设置,浏览、记录和打印。如此多的的窗口。使用B/S也是很困难的,更谈不上完美打印了。

    通过B/S的子模块,完全可以实现。

   1、单个模块,以业务员的独特的主要功能为主,组成30个以内的窗口。

   2、主Main.EXE,调用所有的子程序模块。这样,如同Windows同时打开多个程序,会造成操作系统的反应速度,并占用内存过多。

    因此,需要在主程序中,建立一个函数,调用子程序时前,关闭忆打开的子程序,保障主程序,只能调用 一个子程序。

     注意:通过实践,建议主程序可以同时调用二个独立的模块(EXE)。这样,同时打开二个功能模块,业务上就能完全同时兼顾查看全部窗口,软件的全部窗口。

   3、每个模块,结构上完全独立的EXE。管理下载时,指定电脑下载模块权限,加强软件的安全性。通过每台电脑的机器码,实现权限管理。

   4、每个用户(业务员),各自的模块权限和窗口权限,以及业务的编辑权限。

      模块窗口,与用户友好界面,功能实现快捷。

    三、使用VPN

   只要有网,就能使用,达到远程办公的效果。

    四、登录以及对数据的操作的记录

    1、建立业务员使用记录,记录操作时,例如登录退出模块、保存、删除数据的详细记录。

    五、让主程序同时能调用二个模块,解决C/S,全功能窗口的调用。

    1、将每次调用EXE的文件名,加入EXE_List中,用于判断删除取舍;

    2、使用保障只能调用二个模块,否则,造成系统的负担;

    3、调用模块时,保持一个主模块EXE,调用其他模块,及时删除其它模块(线程)。     

例如:

主程序:

调用“风险控件”模块后,还可以调用"护理报告”模块,二者任务中切换:

 

     这样,C/S可以操作一个主业务模块,同时调用另一个模块。达到全部窗口的调用。

     相关关闭模块的代码:

procedure KilAllExe;                                // 关闭正在运行的进程
var i:Integer;
begin
  if EXE_List.Count>0 then                          // 全部删除
  begin
    for i:=0 to EXE_List.Count-1 do
      if FindTask(EXE_List.Strings[i]) then
        KillTask(EXE_List.Strings[i]);
    for i:=EXE_List.Count-1 downto 0 do
      EXE_List.Delete(i);
  end;
end;

procedure KilAllExe_Keep2;                          // 保持2个
var i:Integer;
begin
  if EXE_List.Count>=2 then
  begin
    for i:=1 to EXE_List.Count-1 do                 // 保持第一个
      if FindTask(EXE_List.Strings[i]) then
      begin
        KillTask(EXE_List.Strings[i]);
      end;
    for i:=EXE_List.Count-1 downto 1 do
      EXE_List.Delete(i);
  end;
end;

     同时,设置一个Boolean全局参数EXEKeep2,确定业务员能打开二个模块,否则。只能打开一个模块。

     对于电脑操作好的业务员,可以开通调用二个模块(甚至多个模块)。

    调用代码:

procedure TFrame1.sSpeedButton1Click(Sender: TObject);
var FirstName,EXEName,FileName,sParam,S:string;
    IniFile: TIniFile;
begin
  FirstName:='Best';
  if EXEKeep2
    then KilAllExe_Keep2                             // 保持 2个 EXE
    else KilAllExe;                                  // 关闭全部EXE
  if not Meun[1] then
  begin
    ShowMessage('你无权限,进入!');
    exit;
  end;
  EXEName:=FirstName+'_'+sFCID+'.exe';
  FileName:=MainPath+EXEName;
  if Not FileExists(FileName) then
  begin
    EXEName:=FirstName+'.exe';
    FileName:=MainPath+EXEName;
  end;
  if FileExists(FileName) then begin
    EXE_List.Add(EXEName);
    DateTimetoString(S,'yyyy-MM-dd hh:nn:ss',now);
    REC_List.add(S+' 进入;'+EXEName);
    shellexecute(ExeHandle,'open',pchar(FileName),pchar(sParam),nil,sw_shownormal);
  end
  else ShowMessage('无模块文件! ');
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值