編集:将来の Google 社員の abarnert の回答は、NSHIObject (HIToolbox から、HI はヒューマン インターフェイスを表す) を提供するように機能します。これに関するドキュメントはほとんど見つかりません。この時点で NSHI オブジェクトと呼ばれるhttps://www.google.com/#q=%22NSHIObject%22+site%3Aapple.com&filter=0 ) は、次のhttp://lists.apple. com/archives/webkitsdk-dev/2010/Sep/msg00007.htmlこのオブジェクトでは機能しません NSWindow は作成されません。りんご API のドキュメントをどうぞ。
NSWindow.initWithWindowRef_(nshi_object)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: Expecting instance of NSWindow as self, got one of NSHIObject
wxPython から渡されたポインターの読み込みに関する元の質問
Cコード
// our data
int a = 42;
// create a pointer to that data
int *p = &a;
// p now contains the address (say 1776) and that address has the integer 42
// get the data back
int ret_a = *p;
// now if we already have an address
int* manual_pointer = (int*) 1776;
int man_a = *manual_pointer;
printf("%d,%d\n", ret_a, man_a);
pyobjc でこの構文を実行するにはどうすればよいですか? 私はそれがここに言及しているのを見ます
More complex types can be represented using longer type strings:
a pointer to some type is _C_PTR followed by the type string of the pointed-to type.
それで、私は何をしますか?これは (オブジェクト タイプが NSInt の場合)?
arg = _C_PTR + "NSInt" + "1776"
Objective C コード (後で追加) これを何らかの方法で Python プロセスに挿入する必要があることに注意してください。そうしないと機能しません。
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
char line[2048];
// this will store are address
long adr;
printf("According to \n- http://forums.wxwidgets.org/viewtopic.php?f=23&t=31778\n- http://forums.wxwidgets.org/viewtopic.php?f=23&t=18645\n");
printf("This will prompt you for a pointer address; please paste in the long you received from GetHandle()\n");
printf("Please enter pointer address: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%ld", &adr);
printf("Using address: %ld\n", adr);
printf("Grabbing view...");
// our NSView
NSView *view = (__bridge NSView *)((void *)adr);
NSRect f = view.frame;
int w = f.size.width;
int h = f.size.height;
printf("Size(%d, %d)", w, h);
}
return 0;
}