C#中GetWindowThreadProcessId的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中GetWindowThreadProcessId的参数相关的知识,希望对你有一定的参考价值。

GetWindowThreadProcessId(窗体句柄, processid);
这样写老是说processid“当前上下文中不存在”。
我这样写int processid;
GetWindowThreadProcessId(窗体句柄, processid);
又说“使用了未赋值的局布变量processid".
第二个参数要怎么用呢??

另外,GetWindowThreadProcessId这个函数返回的是 线程标识符
而它的参数processid返回的是进程句柄还是进程标识符啊??

参考技术A DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);
第2个参数是指向pid的指针
C里面是DWORD dwPid;
GetWindowThreadProcessId(hWnd, &dwPid);
返回标识符。也就是PID了。
参考技术B 好好看看函数原形....第二个参数是指针.... 传入 &processid

processid 进程ID (PID),是创建该线程的进程

MSDN : identifier of the process that created the window
参考技术C 如果你想用该函数得到建立某一窗口的线程ID(线程标识)的话
该参数就用NULL就OK了

在 C/C++ 中使用 swift 库?

【中文标题】在 C/C++ 中使用 swift 库?【英文标题】:Use swift library in C / C++? 【发布时间】:2017-11-27 13:57:19 【问题描述】:

有大量关于如何在 Swift 中使用 C/C++/Objective-C 代码的文档。还有关于在 Objective-C 中使用 Swift 的信息。

但是,我想知道:是否可以在 C 或 C++ 代码中使用 Swift 库?

【问题讨论】:

【参考方案1】:

简短的回答:是的,可以通过将 Swift 代码包装在 Objective-C 代码中,这样可以从 C 中调用它,正如 @Josh Homann 已经建议的那样。

但是,这里有一些注意事项:

如果您要调用 Swift 的 C 代码是命令行的一部分 实用程序,您可能会在加载 Swift 库时遇到问题 运行时,请参阅https://forums.developer.apple.com/thread/8213 和 OSX Command Line Tool with Swift Cocoa Library, Library not loaded 您不能在 C 代码中使用 Swift 特定的数据类型,因此 Objective-C 包装器必须完成所有数据类型转换。

话虽如此,这里还是一个过于简单的小例子,仅用于说明目的。假设我们有这个仅在 Swift 中可用的有价值的功能,我们想在 C 中使用它:

@objc public class SwiftClass : NSObject 
    var myInt : Int32 = 111
    @objc public func processInteger(_ anInt : Int32) -> Int32 
        myInt += anInt
        print("About to return \(myInt) from Swift")
        return myInt
    

Objective-C 包装器,在 .m 文件中,可能如下所示:

int32_t processIntegerOC(int32_t i) 
    puts("Entered Objective-C wrapper, about to use Swift...");
    SwiftClass * sc = [[SwiftClass alloc] init];
    return [sc processInteger:i];

请注意,这个函数可以从 C 中调用,但是因为它在一个 Objective-C 文件中,所以它可以使用 Swift。该函数是从 C 代码调用的,就像任何其他 C 函数一样:

void processIntegerC(int32_t i) 
    puts("Entered processIntegerC(), about to call Objective-C wrapper...");
    int32_t retVal = processIntegerOC(i);
    printf("processIntegerC() has integer %d\n", retVal);   

【讨论】:

【参考方案2】:

您可以使用 Objective C 中的 swift,而 Objective C 是 C 的严格超集。因此,如果您将 swift 函数包装在 Objective C 中,那么您可以从 C 中调用它。请参阅 thread 从 C 调用 ObjC。

【讨论】:

以上是关于C#中GetWindowThreadProcessId的参数的主要内容,如果未能解决你的问题,请参考以下文章

c语言中(c=getchar())!=EOF与c=getchar()!=EOF的区别?

c语言中如何一个函数的多次调用

C/c++中如何产生指定的随机字符

关于C语言中变量在两个.C文件中的调用问题

C语言集合类型逻辑类型

在 C/C++ 中使用 swift 库?