我在vb里面用字节数组(redim方法)比方说有10M大小,怎么交给vc exe处理
并且vc处理后,vb再处理
概念上可行吗?
如果可行,大虾们提个思路

解决方案 »

  1.   

    你可以考虑用DDE!利用TextBox的DDE功能,实现内存工享!
      

  2.   

    看看关于DDE 帮助吧!三言两语说不清楚!
      

  3.   

    把一个文件的名字作为参数传给一个外部应用程序,然后用它来打开该文件?
    自己修改一下。
    在USES 单元中加入 shellapi 就可以了。
    procedure TForm1.Button1Click(Sender: TObject);
      var
      pro,fname:Pchar;
    begin
      pro:=allocmem(255);
      fname:=allocmem(255);
      strPCopy(pro,'notepad.exe');
      strPCopy(fname,'c:\000.txt');
      shellExecute(Handle,'Open',pro,fname,nil,SW_SHOWMAXIMIZED);
    end;
      

  4.   

    或者发消息,读写消息就知道是那个文件这样就可以了标题:获取其他进程中ListView的文本
    说明:Window2000+Delphi6调试通过
    设计:Zswang
    支持:[email protected]
    日期:2004-03-25
    //*)uses CommCtrl;function ListViewColumnCount(mHandle: THandle): Integer;
    begin
      Result := Header_GetItemCount(ListView_GetHeader(mHandle));
    end; { ListViewColumnCount }function GetListViewText(mHandle: THandle; mStrings: TStrings): Boolean;
    var
      vColumnCount: Integer;
      vItemCount: Integer;
      I, J: Integer;
      vBuffer: array[0..255] of Char;
      vProcessId: DWORD;
      vProcess: THandle;
      vPointer: Pointer;
      vNumberOfBytesRead: Cardinal;
      S: string;
      vItem: TLVItem;
    begin
      Result := False;
      if not Assigned(mStrings) then Exit;
      vColumnCount := ListViewColumnCount(mHandle);
      if vColumnCount <= 0 then Exit;
      vItemCount := ListView_GetItemCount(mHandle);
      GetWindowThreadProcessId(mHandle, @vProcessId);
      vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
        PROCESS_VM_WRITE, False, vProcessId);
      vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
        PAGE_READWRITE);
      mStrings.BeginUpdate;
      try
        mStrings.Clear;
        for I := 0 to vItemCount - 1 do begin
          S := '';
          for J := 0 to vColumnCount - 1 do begin
            with vItem do begin
              mask := LVIF_TEXT;
              iItem := I;
              iSubItem := J;
              cchTextMax := SizeOf(vBuffer);
              pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem));
            end;
            WriteProcessMemory(vProcess, vPointer, @vItem,
              SizeOf(TLVItem), vNumberOfBytesRead);
            SendMessage(mHandle, LVM_GETITEM, I, lparam(vPointer));
            ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)),
              @vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
            S := S + #9 + vBuffer;
          end;
          Delete(S, 1, 1);
          mStrings.Add(S);
        end;
      finally
        VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
        CloseHandle(vProcess);
        mStrings.EndUpdate;
      end;
      Result := True;
    end; { GetListViewText }//Example
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      RegisterHotKey(Handle, 1, MOD_WIN, VK_F2);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      UnRegisterHotKey(Handle, 1);
    end;procedure TForm1.WMHOTKEY(var Msg: TWMHOTKEY);
    begin
      case Msg.HotKey of
        1:
          GetListViewText(
            WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)),
            MemoText.Lines);
      end;
    end;