研究delphi服务的路径,试了好几个方法 ,都没取出来,最后发现,要采用取DLL路径的方法

//一、获取Dll自身路径

//1)方法一:

Function GetDllPath(sDllName:string):string;

var
ModuleFileName:array[0..255] of char;

begin
//{取得dll的实际位置}
GetModuleFileName(GetModuleHandle(sDllName), @ModuleFileName[0], SizeOf(ModuleFileName));
Result := ModuleFileName;
end;

//2)方法二:

Function GetDllPath:string;

var
ModuleName:string;
begin
SetLength(ModuleName, 255);
//取得Dll自身路径
GetModuleFileName(HInstance, PChar(ModuleName), Length(ModuleName));
Result := PChar(ModuleName);

end;

// 二、获取调用程序路径

Function GetExecutPath:string;

var
ModuleName:string;
begin
SetLength(ModuleName, 255);
//取得调用Dll程序的路径
GetModuleFileName(GetModuleHandle(nil), PChar(ModuleName), Length(ModuleName));
Result := PChar(ModuleName);

end;

点击打开链接

Delphi遍历进程并获取进程路径

获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName

功能模块改良版:

unit UntModulePath;

interface

uses
Windows, SysUtils, PsAPI;

//获取EXE、Dll模块名称 或 路径
function GetModuleFileNameDef(GetPath: Boolean = True): string;

function GetWindowProcHandle(Wnd: HWND; GetPath: Boolean = True): string;

var
DllPath: string;

implementation

function GetModuleFileNameDef(GetPath: Boolean = True): string;
var
ModuleName: array [0..MAX_PATH - 1]of Char;
begin
FillChar(ModuleName, Length(ModuleName), 0);
//取得Dll自身路径
GetModuleFileName(HInstance, ModuleName, Length(ModuleName));

if GetPath then
Result := ExtractFilePath(StrPas(ModuleName))
else
Result := StrPas(ModuleName);
end;

function GetWindowProcHandle(Wnd: HWND; GetPath: Boolean = True): string;
var
pID: Cardinal;
hProc: THandle;
ModuleName: array [0..MAX_PATH - 1]of Char;
begin
Result := '';
if Wnd= 0 then
Exit;

FillChar(ModuleName, Length(ModuleName), 0);

GetWindowThreadProcessId(Wnd, pID);
hProc:= OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, pID);
if hProc= 0 then
Exit;
try
GetModuleFileNameEx(hProc, 0, ModuleName, Length(ModuleName));
finally
CloseHandle(hProc);
end;
if GetPath then
Result := ExtractFilePath(StrPas(ModuleName))
else
Result := StrPas(ModuleName);
end;

initialization
DllPath:= GetModuleFileNameDef;

end.

Delphi的TService 服务路径获取 Dll中获取文件路径的更多相关文章

  1. 当程序调用dll时获取dll路径,DLL中获取自身的句柄

    当程序调用dll时,获取dll路径的方法: HMODULE hMod = GetModuleHandle(_T("axload.dll")); if (hMod != NULL) ...

  2. js/jquery 获取本地文件的文件路劲 获取input框中type=‘file’ 中的文件路径(转载)

     原文:http://blog.csdn.net/niyingxunzong/article/details/16989947 js/jquery 获取本地文件的文件路劲 获取input框中type= ...

  3. delphi 获取 TreeView选中的文件路径

      //获取 TreeView选中的文件路径 unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, G ...

  4. django url路径与模板中样式相对路径的问题

    static目录下有css和js及image等文件夹,里面放置网站的一些静态文件,static位于网站根目录下,django中配置静态文件这个就细说,网上都有,昨天在添加新内容时发现一个问题,我的ur ...

  5. 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理

    [源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...

  6. maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程。

    注:本文来源于:杨四郎2018  <maven的安装.路径配置.修改库文件路径和eclipse中的配置.创建maven工程> 一.maven的安装 首先,先到官网去下载maven.这里是官 ...

  7. pip freeze > requirements.txt` 命令输出文件中出现文件路径而非版本号

    pip freeze > requirements.txt 命令输出文件中出现文件路径而非版本号 解决办法: pip list --format=freeze > requirements ...

  8. (转)在WCF服务的ServiceReferences.ClientConfig中使用相对路径

    问题: Silverlight项目中添加服务引用后会在Silverlight项目中生成一个ServiceReferences.ClientConfig文件,这个文件中包含了引用服务的绑定(bindin ...

  9. Java非递归的方式获取目录中所有文件(包括目录)

    零.思路解析 对于给出的文件查看其下面的所有目录,将这个目录下的所有目录放入待遍历的目录集合中,每次取出该集合中的目录遍历,如果是目录再次放入该目录中进行遍历. 一.代码 /** * 非递归的方式获取 ...

随机推荐

  1. 华大单片机开发板HC32F030上手入门

    HC32F030开发板(如下图所示)分为板载调试模块(左半部分)和MCU开发电路(右半部分).二者中间通过邮票孔相连,如果将板子从中间掰开,板载调试模块就可以当一个CMSIS-DAP的仿真器来使用.此 ...

  2. SQL 约束 索引

    --约束constraint--not null 非空约束create table demo01(empno number(4),ename varchar2(10) not null,job var ...

  3. 在队列中join()与task_done()的关联性

    1.基础解释: Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执 ...

  4. 《ABCD组》第一次作业:团队亮相

    ABCD组:团队亮相 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nw ...

  5. 描述逻辑(DL)基础知识

    Logic逻辑理论实际上是一个规范性(normative)的理论,而不是一个描述性的(descriptive)理论.即,它并不是用来描述人类究竟是采用何种的形式来推理的,而是来研究人类应该如何有效的进 ...

  6. (转载)python调用shell命令之os 、commands、subprocess

    linux系统下进入python交互式环境: 一.os 模块 1.1.os模块的exec方法簇: python交互界面中: In [1]: import os In [2]: os.exec os.e ...

  7. static_cast 使用

    static_cast 用于基本类型转换,入int转double: int distanceThreshold  = 4: double val = static_cast<qreal>( ...

  8. GridFS and Geospatial

    GridFS - specification for storing and retrieving large files... images,audio file, video files... F ...

  9. Mac下StarUML的安装以及破解

    1.下载地址:http://staruml.io/ 2. 打开 /Applications/StarUML.app/Contents/www/license/node/LicenseManagerDo ...

  10. git温习

    git init:将文件变成git仓库 ls -ah:查看隐藏目录 git add 文件1  文件2 ...:将文件添加到缓存区 git commit -m ‘提交说明’:提交到本地仓库一次  并说明 ...