小编use*_*359的帖子

DllImport 与 ComImport

我试图理解平台调用服务、组件对象模型等概念,但我发现很难理解什么是什么以及不同的职责所在。我一直在研究包含以下内容的代码:

[DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)]
[return: MarshalAs(UnmanagedType.Interface)]
internal static extern object SHCreateItemFromParsingName([MarshalAs(UnmanagedType.LPWStr)] string pszPath, IBindCtx pbc, ref Guid riid);

[ComImport]
[Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IShellItem
Run Code Online (Sandbox Code Playgroud)

据我了解,前者导入一个创建 shell 项的函数,后者导入创建它们所需的类型(接口)。

我不明白的是为什么一个使用 DllImport 而另一个使用 ComImport。它们各自的文档中没有任何内容说明要使用哪种方法,也没有提供 COM 对象的 GUID。我唯一的猜测是,区别因素是前者是一个函数,后者是一个接口。

c# c++ com pinvoke winapi

4
推荐指数
1
解决办法
3630
查看次数

递归查找文件中的文本(PowerShell)

我想在特定目录中查找包含特定字符串的所有文件。具体来说,我想查找回车符(\ r),然后手动浏览文件并删除出现的文件。我不希望PowerShell删除它们,因为在我的目录结构中可能需要某些子目录。

string powershell recursion search text

3
推荐指数
1
解决办法
8747
查看次数

mysqldump (SQL) 的位数据类型列输出

我使用 bit(1) 来表示布尔值,但是当我使用 mysqldump 将表转储到文件中时,输出的数据不会以我期望的格式出现。

我在表中看到的内容(phpMyAdmin):

0    1
Run Code Online (Sandbox Code Playgroud)

我在文件(mysqldump)中看到的内容:

SOH    \0
Run Code Online (Sandbox Code Playgroud)

如果我使用 phpMyAdmin 的导出功能,我会看到什么:

b'0'    b'1'
Run Code Online (Sandbox Code Playgroud)

我是否需要使用标志或者这是位数据类型的安全表示?

mysql sql bit output

3
推荐指数
1
解决办法
1144
查看次数

在文件中查找转义字符

我正在尝试在文件中找到回车符(\r)和新行(\n),但以下两个语句不返回任何内容:

Get-ChildItem -recurse | Select-String -pattern "\r" | group path | select name
Get-ChildItem -recurse | Select-String -pattern "\n" | group path | select name
Run Code Online (Sandbox Code Playgroud)

但是,tab(\t)转义字符似乎工作:

Get-ChildItem -recurse | Select-String -pattern "\t" | group path | select name
Run Code Online (Sandbox Code Playgroud)

string powershell design-patterns escaping

2
推荐指数
1
解决办法
163
查看次数

标签 统计

powershell ×2

string ×2

bit ×1

c# ×1

c++ ×1

com ×1

design-patterns ×1

escaping ×1

mysql ×1

output ×1

pinvoke ×1

recursion ×1

search ×1

sql ×1

text ×1

winapi ×1