我在csdn的第一帖(那时可珍惜可用分了,都不敢提10分的问题)
==========================================================
CSDN - 技术社区 - Windows SDK/API
主 题: 关于线程的问题,比较菜,希望有人指导一下
作 者: bluekitty (可爱猪猪)
等 级:
信 誉 值: 100
所属社区: Windows SDK/API
问题点数: 5
回复次数: 4
发表时间: 2003-12-21 9:54:25
有一个函数func(para1:pointer;para2:pointer):integer,创建一个线程传递这个函数和参数并立即执行,如何取得func的返回值
回复人: Spacesoft() ( ) 信誉:100 2003-12-22 22:36:05 得分: 1
WaitForSingleObject
Top
回复人: bottom() ( ) 信誉:100 2003-12-23 13:06:53 得分: 1
up
Top
回复人: chw_csdn_chw() ( ) 信誉:100 2003-12-26 14:30:13 得分: 1
N多种方法,你可以将返回值写到一个文件里,或利用内存映射,写到共享内存里。
脑筋灵活一点,不要钻牛角尖。
Top
回复人: xjb2001() ( ) 信誉:100 2003-12-26 14:39:00 得分: 2
开共享内存 让后发个消息到你的指定窗口,消息里带的参数就是你共享内存的地址 然后指定窗口接到消息后,去访问消息带来的地址; 我一般就是这样处理进程和线程的通讯的; 如果要发消息到线程就用 PostThreadMessage; 关键要自己会灵活运用;
不要专牛角尖;
Top
该问题已经结贴 ,得分记录: Spacesoft (1)、 bottom (1)、 chw_csdn_chw (1)、 xjb2001 (2)、
==========================================================
CSDN - 技术社区 - Windows SDK/API
主 题: 关于线程的问题,比较菜,希望有人指导一下
作 者: bluekitty (可爱猪猪)
等 级:
信 誉 值: 100
所属社区: Windows SDK/API
问题点数: 5
回复次数: 4
发表时间: 2003-12-21 9:54:25
有一个函数func(para1:pointer;para2:pointer):integer,创建一个线程传递这个函数和参数并立即执行,如何取得func的返回值
回复人: Spacesoft() ( ) 信誉:100 2003-12-22 22:36:05 得分: 1
WaitForSingleObject
Top
回复人: bottom() ( ) 信誉:100 2003-12-23 13:06:53 得分: 1
up
Top
回复人: chw_csdn_chw() ( ) 信誉:100 2003-12-26 14:30:13 得分: 1
N多种方法,你可以将返回值写到一个文件里,或利用内存映射,写到共享内存里。
脑筋灵活一点,不要钻牛角尖。
Top
回复人: xjb2001() ( ) 信誉:100 2003-12-26 14:39:00 得分: 2
开共享内存 让后发个消息到你的指定窗口,消息里带的参数就是你共享内存的地址 然后指定窗口接到消息后,去访问消息带来的地址; 我一般就是这样处理进程和线程的通讯的; 如果要发消息到线程就用 PostThreadMessage; 关键要自己会灵活运用;
不要专牛角尖;
Top
该问题已经结贴 ,得分记录: Spacesoft (1)、 bottom (1)、 chw_csdn_chw (1)、 xjb2001 (2)、
解决方案 »
- 对程序自身内存进行读写和搜索如何实现?
- 用过dxDBInspector的朋友们帮帮忙,死活编译不过去!
- 写的东西如何发布? 有acess数据库的
- [获取主板Bios信息] 高手请进
- 用table控件写数据到数据库中,对大于1万、小于10万行的数据如何规划,对C/S服务器性能最好?请高手指点
- 怎样直接在屏幕上输出?用哪个语句?能定位吗?
- 如何将onKeyDown中的代码移植到onKeyPress中
- 在delphi中怎样定义全局变量(对整个应用程序有效):定义在哪里?在那里初始化?
- ★★★有QQ号码赠送!!你想要吗?(限量赠送!)
- 请问:经纬度与大地坐标转换问题
- 小问题急!!!
- 感觉挺难的一个问题。大家有空近来瞧瞧!
==========================================================
CSDN - 技术社区 - 数据库相关
主 题: 基础问题,望有人指导
作 者: bluekitty (可爱猪猪)
等 级:
信 誉 值: 100
所属社区: 数据库相关
问题点数: 20
回复次数: 3
发表时间: 2003-12-23 11:20:46
在dbgrid中显示一个access表A,其中有一字段F,类型single,小数位数2,用access打开显示有一数据25,可在dbgrid中该数据显示24.9999999...,这是什么问题,怎么正常显示为25
回复人: bluekitty() ( ) 信誉:100 2003-12-23 11:23:09 得分: 0
RT
Top
回复人: rockswj() ( ) 信誉:100 2003-12-23 11:46:30 得分: 20
displayformat:='0.00'
Top
回复人: bluekitty() ( ) 信誉:100 2003-12-23 13:22:55 得分: 0
rockswj(石头)兄 displayformat属性在哪里设置?在dbgrid中还是在dataset中,我找不到这个属性
Top
该问题已经结贴 ,得分记录: rockswj (20)、
==========================================================
CSDN - 技术社区 - VCL组件开发及应用
主 题: 小问题,快来轻松得分
作 者: bluekitty (可爱猪猪)
等 级:
信 誉 值: 100
所属社区: VCL组件开发及应用
问题点数: 20
回复次数: 6
发表时间: 2003-12-30 13:31:45
为什么显示中文不正常(如:用静态文本控件或用showmessage函数显示信息,可能还有其他的,英文没这个问题),有的时候显示的文本后面有一部分被截掉了,有时却显示正常?
回复人: bluekitty() ( ) 信誉:100 2003-12-30 13:32:15 得分: 0
比较基础的问题,快来拿分阿
Top
回复人: simonysj() ( ) 信誉:100 2003-12-30 13:47:58 得分: 10
跟踪一下你要显示的字符串,可能在显示前,就被截掉了。
Top
回复人: aiirii() ( ) 信誉:100 2003-12-30 13:55:02 得分: 10
设置字体的原因, 将控件对应的 Font 修改为, 如"宋体" 就行
Top
回复人: bluekitty() ( ) 信誉:100 2003-12-30 14:42:52 得分: 0
那要一个一个的改岂不很麻烦?有没有办法让delphi默认为宋体gb32字符集,新创建的控件
按此默认设置字体?
Top
回复人: bluekitty() ( ) 信誉:100 2003-12-30 14:44:28 得分: 0
顶一下,另外用inputbox显示也有这个问题,怎么解决?
Top
回复人: bluekitty() ( ) 信誉:100 2003-12-30 14:47:35 得分: 0
再顶一下,一会来结帖
Top
该问题已经结贴 ,得分记录: simonysj (10)、 aiirii (10)、
uses TLHelp32,PsAPI;(1)显示进程列表:
procedure TForm1.Button2Click(Sender: TObject);
var lppe: TProcessEntry32;
found : boolean;
Hand : THandle;
P:DWORD;
s:string;
begin
ListBox1.Items.Clear ;
Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
found := Process32First(Hand,lppe);
while found do
begin
s := StrPas(lppe.szExeFile);
if lppe.th32ProcessID>0 then
p := lppe.th32ProcessID
else
p := 0;
ListBox1.Items.AddObject(s,pointer(p));//列出所有进程。
found := Process32Next(Hand,lppe);
end;
end;(2)杀死某进程:
procedure TForm1.Button3Click(Sender: TObject);
var lppe: TProcessEntry32;
found : boolean;
Hand : THandle;
P:DWORD;
sExeFile,sSelect:string;
killed:boolean;
begin
p :=DWORD(ListBox1.Items.Objects[ListBox1.itemindex]);
if P<>0 then
begin
killed := TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF);
if not killed then
messagebox(self.handle,pchar(sExeFile+'无法杀死!'),'提示',MB_OK or MB_ICONWARNING)
else
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
end;(3)取得某进程EXE路径:
procedure TForm1.Button8Click(Sender: TObject); //uses PSAPI;
var
h:THandle; fileName:string; iLen:integer; hMod:HMODULE;cbNeeded,p:DWORD;
begin
p :=DWORD(ListBox1.Items.Objects[ListBox1.itemindex]);
h := OpenProcess(PROCESS_ALL_ACCESS, false, p); //p 为 进程ID
if h > 0 then
begin
if EnumProcessModules( h, @hMod, sizeof(hMod), cbNeeded) then
begin
SetLength(fileName, MAX_PATH);
iLen := GetModuleFileNameEx(h, hMod, PCHAR(fileName), MAX_PATH);
if iLen <> 0 then
begin
SetLength(fileName, StrLen(PCHAR(fileName)));
ShowMessage(fileName);
end;
end;
CloseHandle(h);
end;
end;(4)取得窗口列表
begin
ListBox1.Items.Clear ;
EnumWindows(@EnumWindowsProc, 0);
end;(5)杀死窗口进程
procedure TForm1.Button6Click(Sender: TObject);
var
H:THandle;
P:DWORD;
s:string;
killed:boolean;
begin
s := ListBox1.Items[ListBox1.ItemIndex];
H:=FindWindow(nil,pchar(s));
if H<>0 then
begin
GetWindowThreadProcessId(H,@P);
if P<>0 then
killed:=TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF);
if not killed then
messagebox(self.handle,pchar(s+'无法杀死!'),'提示',MB_OK or MB_ICONWARNING)
else
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
end;(6)取得窗口进程路径:
procedure TForm1.Button9Click(Sender: TObject);
var
H:THandle; P,cbNeeded: DWORD; s,fileName:string;
iLen:integer; hMod:HMODULE;
begin
s := ListBox1.Items[ListBox1.ItemIndex];
H:=FindWindow(nil,pchar(s)); if H<>0 then
begin
GetWindowThreadProcessId(H,@P);
if P<>0 then
begin
h := OpenProcess(PROCESS_ALL_ACCESS, false, p); //p 为 进程ID
if h > 0 then
begin
if EnumProcessModules( h, @hMod, sizeof(hMod), cbNeeded) then
begin
SetLength(fileName, MAX_PATH);
iLen := GetModuleFileNameEx(h, hMod, PCHAR(fileName), MAX_PATH);
if iLen <> 0 then
begin
SetLength(fileName, StrLen(PCHAR(fileName)));
ShowMessage(fileName);
end;
end;
CloseHandle(h);
end;
end;
end;
end;(7)文件属性:
procedure TForm1.Button1Click(Sender: TObject);
var
SR: TSearchRec;
V1, V2, V3, V4: integer ;
const
dtFmt:string = 'YYYY-MM-DD HH:NN:SS';
begin
// ============== 方法一 ==================== //
if FindFirst(sFileName, faAnyFile, SR) = 0 then
begin
Edit1.Text := intToStr(SR.Attr); //文件属性
Edit2.Text := intToStr(SR.Size); //文件大小
Edit3.Text := FormatDateTime(dtFmt,CovFileDate(SR.FindData.ftCreationTime)); //创建时间
Edit4.Text := FormatDateTime(dtFmt,CovFileDate(SR.FindData.ftLastWriteTime)); //最后修改时间
Edit5.Text := FormatDateTime(dtFmt,CovFileDate(SR.FindData.ftLastAccessTime)); //最后访问时间 if SR.Attr and faHidden <> 0 then
FileSetAttr(sFileName, SR.Attr-faHidden); FindClose(SR);
end; if GetFileVersion(sFileName,V1, V2, V3, V4) then
Edit7.Text := intToStr(v1)+'.'+intToStr(v2)+'.'+intToStr(v3)+'.'+intToStr(v4); // ============== 方法二 ==================== //
{
var
Attrs: Word;
f: file of Byte; // 文件大小 必须要 定义为" file of byte" ,这样才能取出 bytes
size: Longint; //文件属性
Attrs := FileGetAttr(sFileName); Edit1.Text := intToStr(Attrs); //文件大小
AssignFile(f, OpenDialog1.FileName);
Reset(f);
try
AssignFile(f, sFileName);
Reset(f);
size := FileSize(f);
Edit2.Text := intToStr(size);
finally
CloseFile(f);
end;
}
end;(8)判断程序是否在运行:
procedure TForm1.Button5Click(Sender: TObject);
var PrevInstHandle:Thandle;
AppTitle:pchar;
begin
AppTitle := pchar('test');
PrevInstHandle := FindWindow(nil, AppTitle);
if PrevInstHandle <> 0 then begin
if IsIconic(PrevInstHandle) then
ShowWindow(PrevInstHandle, SW_RESTORE)
else
BringWindowToTop(PrevInstHandle);
SetForegroundWindow(PrevInstHandle);
end;
end;
本文引用通告地址: http://blog.csdn.net/lanyus/services/trackbacks/514259.aspx