现有EXE程序,调整为 带界面的ocx控件形式。不再单独作为Exe运行。让第三方程序可以把这个ocx嵌入到窗体中运行。
    ocx控件需要有一个login(username,password)函数,验证一下身份,避免别人拿到OCX可以使用。 请问这怎么弄呢?请高手指教!谢谢!

解决方案 »

  1.   

    ocx内部要有个算号的代码啊,就行用友华表的cell组件那样
      

  2.   

    那就加一个login(username,password)函数和全局变量bPass:=false;
    通过的,才bPass:=true;
    其它任何函数执行前,都先判断bPass决定给不给运行当然,这个login函数可以更高级一些:
    先提供一个随机数函数:function getRand():integer;
    begin
      全局变量iRnd:=random($7fffffff);
      result:=iRnd;
    end;
    再提供一个加密函数:function DoRnd(rnd,key:intger);
    login()时需要传入DoRnd(getRand(),key)的结果
    如果没有key,结果肯定不对
      

  3.   

    login(username,password)函数加在什么地方,要怎么加进去?我在OCX里面要打开别的EXE,代码如下:
    procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
    var h:HWND;
    begin
        Panel1.Visible :=true;
        ExtractRes('EXEFILE', 'demo', 'demo.exe');   //这里调用函数释放资源
        WinExec(PChar(ExtractFilePath(Application.ExeName)+'demo.exe'),SW_HIDE);
        h:= FindWindow(nil,'frmMain');
        windows.SetParent(h,Panel1.Handle);
        SetWindowPos(h, 0, 0, 0, Panel1.Width , Panel1.Height, SWP_NOZORDER);
    end;
      

  4.   

    我说的ocx怎么被exe调用你的ocx还要调用exe?
      

  5.   

    是的,既要调用exe,还要被第三方的exe调用
      

  6.   

    在这个Ocx中的form的oncreate中写代码