求一段代码 关于sendmessage类似的!

fyq19811129 2012-10-30 01:28:08
我有一个用VF编写的软件(暂时叫它:软件A ),里面有 MID 窗口,
我现在想用DELPHI 把EXCEL里面的信息读到DELPHI里,再用DELPHI的API函数向 软件A 的MID窗口的输入框还有下拉框添加值

前面的我已经达到目的, 但是用DELPHI的API向软件A中MID窗口里添加信息还没有思路,哪位大人给一些相关的代码!!

如果你是从网上复制的代码就不用向这里贴了,也不要和我解释要用到什么API函数,哪个函数是做什么用的! 我只要例子,或是发个源码下载地址,或是发我信箱 bbskill@163.com 最好是完整的!
我不要求多,只要可以供我参考的例子就行!!
再次谢谢各位,一经核实马上送分!! 我也不知道我的分有多少,反正是倾其所有!!
...全文
427 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tgcwc 2012-11-19
  • 打赏
  • 举报
回复
procedure postText(hWnd: HWND; Text: string); //文本框赋值 var //Ret: LongInt; //mText: PChar; Buf: Integer; begin //GetMem(mText, Length(Text)); //StrCopy(mText, PChar(Text)); //try Buf := LongInt(pchar(Text)); sendMessage(hWnd, WM_SETTEXT, 0, Buf); sleep(20); //finally //FreeMem(mText,sizeof(text)); //end; end; procedure postText_cb(hWnd: HWND; Text: string); //组合框赋值 var //Ret: LongInt; //mText: PChar; Buf: Integer; begin //GetMem(mText, Length(Text)); //StrCopy(mText, PChar(Text)); //try Buf := LongInt(pchar(Text)); //sendMessage(hWnd, CB_SELECTSTRING, -1, Buf); sendMessage(hWnd, CB_SELECTSTRING, -1, Buf); sleep(20); //finally //FreeMem(mText,sizeof(text)); //end; end; function EnumChildWindowsPro(Handle:HWND;ConInfor:LPARAM):boolean;stdcall; //遍历窗口 begin if not (Handle > 0) then begin result := false; exit; end; mypro[i_win]:=handle; i_win:=i_win+1;//转换参数 result := true; end; function FindControl(Parent:HWND;ClassName,ControlName:String):HWND; //方便调用EnumChildWindows函数 var tConInfor:ControlInfor; begin tConInfor.ClassName:=ClassName; tConInfor.ControlName:=ControlName; EnumChildWindows(Parent,@EnumChildWindowsPro,LongInt(@tConInfor)); Result:=hControl; end; //数字 function posttext2(mhd:hwnd;mstring:string):integer; //另一个文本框赋值函数 var s:string; hd1:hwnd; ch: byte; i: Integer; pcText:array[0..254] of char; begin s:=mstring; hd1:=mhd; //全选文本框 //sendmessagea(hd1, EM_SETSEL, 0, -1); postmessagea(hd1, EM_SETSEL, 0, -1); Sleep(25); postmessagea(hd1, WM_CLEAR, 0, 0); Sleep(25); //开始发送 lstrcpy(pcText,PChar(s)); i := 0; while i<=254 do begin if pcText[i]<>#0 then begin ch := byte(pctext[i]); if Windows.IsDBCSLeadByte(ch) then begin postmessagea(hd1, WM_CHAR, ch, 0); Inc(i); sleep(20); postmessagea(hd1, WM_CHAR, byte(pctext[i]), 0); Sleep(20); end else postmessagea(hd1, WM_CHAR, Word(ch), 0); Sleep(20); Inc(i); end else break; end; result:=1; end; //文本赋值 与上面的区别在sendmessagea函数 function posttext1(mhd:hwnd;mstring:string):integer; var s:string; hd1:hwnd; ch: byte; i: Integer; pcText:array[0..254] of char; begin s:=mstring; hd1:=mhd; //全选文本框 sendmessagea(hd1, EM_SETSEL, 0, -1); Sleep(25); sendmessagea(hd1, WM_CLEAR, 0, 0); Sleep(25); //开始发送 lstrcpy(pcText,PChar(s)); i := 0; while i<=254 do begin if pcText[i]<>#0 then begin ch := byte(pctext[i]); if Windows.IsDBCSLeadByte(ch) then begin sendmessagea(hd1, WM_CHAR, ch, 0); Inc(i); sleep(25); sendmessagea(hd1, WM_CHAR, byte(pctext[i]), 0); Sleep(25); end else sendmessagea(hd1, WM_CHAR, Word(ch), 0); Sleep(25); Inc(i); end else break; end; result:=1; end; //建议用前三个函数处理赋值。中间的两个函数用来遍历窗体。
fyq19811129 2012-11-05
  • 打赏
  • 举报
回复
各位达人,请看清我的问题!! 那个标题当时在提问的时候想的,没想到弄出差错了! 我再重申一下我的问题吧! 我只想求一段 用DELPHI 可以向另一个程序中的文本框、下拉框和子窗口中的文本框 等输入自己想要的信息 这样一个小例子! 就这么简单!!
hsfzxjy 2012-11-03
  • 打赏
  • 举报
回复
SendMessage(下拉框句柄,CB_ADDSTRING,0,字符串);
sundayzhao 2012-10-31
  • 打赏
  • 举报
回复
VF这个程序有源码吗,如果有,很简单,有消息可以,如果没有,应该找到下拉框的句柄,然后应该就能更改了。
fyq19811129 2012-10-31
  • 打赏
  • 举报
回复
。。。我只想要一段代码,没必要弄的这么复杂吧!!
如果有的话,就贴上来,越简单越好!!
hsfzxjy 2012-10-31
  • 打赏
  • 举报
回复
我想这跟语言无关,sendmessage的思路是对的,你可以先找到下拉框的句柄,再发送CB_ADDSTRING消息
fyq19811129 2012-10-31
  • 打赏
  • 举报
回复
就是 visual foxpro 数据库

如果手中有类似的例子是最好的
hsfzxjy 2012-10-31
  • 打赏
  • 举报
回复
VF是啥。。
hsfzxjy 2012-10-30
  • 打赏
  • 举报
回复
VF是啥。。
fyq19811129 2012-10-30
  • 打赏
  • 举报
回复
我顶,等好心人
该用户很帅 2012-10-30
  • 打赏
  • 举报
回复
beginthread

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧