小编Ian*_*ton的帖子

可序列化的继承

如果某些东西继承自Serializable类,那么子类是否仍然可以序列化?

.net c# vb.net

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

以编程方式打开Mac帮助菜单

我正在将GTK#应用程序集成到Mac OS X.Mac OS X上的GTK是一些Cocoa和Carbon基础的包装器.我们直接使用Carbon全局菜单API有一些特定于平台的东西(它比Cocoa更低级和更灵活,我们不需要是64位).

在Carbon将它们作为命令发送之前,似乎GTK吞噬了所有键盘事件.这是有道理的,因为没有Carbon命令到GTK世界的映射.一般来说,这不是问题,因为我们有一个全局键事件处理程序,并通过我们自己的命令系统调度所有内容.但是,这似乎阻止了Cmd-?从打开帮助搜索菜单,我找不到以编程方式执行此操作的方法.

菜单管理器的MenuSelect功能很有前途,但我还没有找到一种自动确定坐标的方法,由于某些原因它只在我两次击中组合时才有效...

或者,一种方式来发送Cmd-?对Carbon的命令处理进行击键或直接合成命令事件会很好,但我在那方面没有运气.

没有命令ID,Carbon的ProcessHICommand没有任何用处,我无法弄清楚它是什么(如果有的话)

关于Cocoa,我可以抓住NSWindow并调用InterpretKeyEvents,但是我没有任何运气成功合成NSEvent - 它只是发出哔哔声.我正在使用的事件是

var evt = NSEvent.KeyEvent (NSEventType.KeyDown, System.Drawing.PointF.Empty,
    NSEventModifierMask.CommandKeyMask | NSEventModifierMask.ShiftKeyMask,
    0, win.WindowNumber, NSGraphicsContext.CurrentContext, "?", "?",
    false, (ushort) keycode);
Run Code Online (Sandbox Code Playgroud)

密钥代码是从GTK密钥映射确定为44.我使用普通的MonoMac(Cocoa)应用程序确认密钥代码是正确的,但是InterpretKeyEvents也不适用于该应用程序中的事件.我找不到与该命令相关的任何选择器.

gtk macos mono cocoa macos-carbon

15
推荐指数
1
解决办法
1398
查看次数

处理不同的非托管整数大小

我有一个C库.它有许多函数调用,如下所示:

void init_foo( unsigned long x, unsigned long y );
Run Code Online (Sandbox Code Playgroud)

库本身在运行时动态加载(而非插件).标头在所有平台上都是一致的.

我的问题是在Windows和32位linux上,unsigned long是32位,而在64位linux上这是64位.

这个库的各种实现都接受这个,你需要为正确的目标平台构建你的C程序(如预期的那样).

我的互操作方法需要是其中之一,具体取决于架构.

#if lin64
[DllImport("libfoo")]
public static void init_foo( Uint64 x, Uint64 y );
#else
[DllImport("libfoo")]
public static void init_foo( Uint32 x, Uint32 y );
#endif
Run Code Online (Sandbox Code Playgroud)

我可以使用的C#类型在所有平台上都是固定大小的(因为它们应该是).所以我从.Net/Mono传来的托管长期将永远是一个非托管的uint64_t.

我如何处理这个可变整数大小但是有一个程序集可以在.Net或单声道上以32位或64位模式运行?

.net c# mono integer unmanaged

8
推荐指数
1
解决办法
420
查看次数

OS X上的Mono和WInforms

我刚刚开始探索单声道winforms环境,我无法弄清楚如何在没有启动控制台会话的情况下从monodevelop内启动程序.

我的简单程序运行正常但是当它退出终端会话时总是会创建并等待我"按任意键".我想我可以安排一些事情,以便终端窗口自动关闭,但我宁愿应用程序只是'本机'运行,这是可能的还是单声道和.net功能的工作方式排除它?

如Zetcode中的示例所示,在'Main'中,其余代码以'application.run(new aFunction());'开头,我认为这可能是终端会话发生的原因,但将其替换为:

myNewClass n = new myNewClass();
n.aFunction();

导致程序根本不运行(或者可能只是在没有做任何事情的情况下退出).

我是一名经验丰富的程序员,但对C#或单声道/ .net环境并不熟悉,所以"陈述明显的"可能就是答案中所需的全部内容.

c# macos mono monodevelop winforms

6
推荐指数
1
解决办法
913
查看次数

在运行时替换Property Setter方法

我有许多共享基本类的对象,我希望拦截所有设置属性值的调用,并记录是否已基于每个实例设置.

我可以在运行时用Reflection替换属性的Set方法吗?

c# reflection

5
推荐指数
1
解决办法
5166
查看次数

消息在C中的线程之间传递

我试图让线程A与线程B进行通信.我应该使用线程之间的消息传递来做到这一点,但我试图找到一些解释消息传递的示例源代码.

有没有人有一些很好的链接到一些示例源代码(在C中)解释消息传递?

c multithreading

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

安装Xamarin Mono for Android

我正在尝试安装Xamarin的Mono for Android,最初它说我需要JDK,Android SDK,Mono Develop,然后是最重要的包下载和安装,即适用于Visual Studio和Mono Develop的Android Mono ...

所以我尝试了手动安装:

我有JDK.我下载了Monodevelop及其先决条件..我为Windows7下载了Android SDK版本20,然后完全安装了Android AVD和SDK我安装了SDK平台工具,Google USB驱动程序,系统映像(仅适用于API 14)和SDK平台14 ..

现在我尝试了Xamarin,它说Android SDK没有安装,将被下载和安装.所以我查看了日志并下载了SDK平台7,8,10,12

现在,您可以手动安装所有下面的sdk平台吗?

android-7("Android SDK平台2.1_r3")
android-8("Android SDK平台2.2_r3")
android-10("Android SDK平台2.3.3._r2")
android-12("Android SDK平台3.1,修订版3")
android-14("Android SDK Platform 4.0")

我只是想让Xamarin检测到我安装了Android SDK.

我是否必须为Xamarin安装这些版本的系统映像来检测Android SDK?我只有API 14的系统映像.

mono visual-studio-2010 monodevelop xamarin.android xamarin

5
推荐指数
1
解决办法
1万
查看次数

在OpenSSL中使用ECDSA签名消息

在以编程方式在OpenSSL中使用ECDSA时,如何设置用于签名消息的私钥?我有以下代码:

static int create_signature(unsigned char* hash)
{
  EC_KEY *eckey=NULL;
  EC_GROUP *ecgroup=NULL;
  EVP_PKEY *evpkey=NULL;
  unsigned char *signature=NULL;
  point_conversion_form_t form = POINT_CONVERSION_UNCOMPRESSED;
  int signature_size, block_size;
  unsigned char * block=NULL;

  ecgroup = get_ec_group_192();
  EC_GROUP_set_asn1_flag(ecgroup, OPENSSL_EC_NAMED_CURVE);
  EC_GROUP_set_point_conversion_form(ecgroup, form);
  eckey=EC_KEY_new();
  EC_KEY_set_group(eckey,ecgroup);
  EC_KEY_generate_key(eckey);
  evpkey=EVP_PKEY_new();
  EVP_PKEY_assign_EC_KEY(evpkey,eckey);
  signature=OPENSSL_malloc(EVP_PKEY_size(evpkey));

  ECDSA_sign(0, hash, sizeof(hash), signature, &signature_size, eckey);

  printf("%s", signature);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

该函数get_ec_group_192()是通过运行创建的,openssl ecparam -C -name secp192k1 -genkey它也会生成一些EC PARAMETERS和一个EC PRIVATE KEY.

我想要做的是加密hash我的私钥中包含的消息,以便只有公钥才能解密它.这可能与上面的代码有关,还是我完全错了?

c encryption openssl elliptic-curve

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

如何下载神秘依赖项的最新INTEGRATION版本

我在jenkins中有一个神器(通用)构建.它适用于发布但我在"下载"部分的spec文件中写入的内容有问题.

我希望我的版本从另一个版本下载最新版本的文件.我的repo布局已经配置好,如果我使用的URL如下:http:// artiserver:8081/artifactory/infra/package-scripts/[INTEGRATION] /scripts_archive.tar.gz我总是得到该文件的最新版本.

在通用工件集成作业配置的"下载文件"规范部分中,我可以像这样编写一个spec文件:

{
   "files": [
     {
         "pattern": "infra/package-scripts/32/scripts_archive.tar.gz"
     }
   ]
}
Run Code Online (Sandbox Code Playgroud)

这可以按预期工作(总是获得32工件的版本.我想让工作取决于最新版本(即,我从INTEGRATION链接得到的)例如:

{
   "files": [
     {
         "pattern": "infra/package-scripts/[INTEGRATION]/scripts_archive.tar.gz"
     }
   ]
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?或者我是否需要我的工作依赖于没有编号的升级版本?

- 编辑 -

我也尝试过:

{
  "files": [
     {
        "aql": { 
            "items.find" : {
                "repo": "infra",
                "name": "scripts_archive.tar.gz",
             },
            "sort": { "$desc": [ "created" ] },
            "limit": 1
         }
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

但是得到语法错误..

- 编辑2 -

结果我还不能在jenkins规范文件中使用排序/限制AQL - https://www.jfrog.com/jira/browse/HAP-832

artifactory jenkins

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

pygame如何正确旋转图像?

在pygame中,我无法旋转图像/表面.图像正确绘制而不是旋转.

self.other1 = pygame.image.load("enemy.png").convert_alpha()
self.other2 = pygame.transform.rotate(self.other1, math.radians(270))
self.screen.blit(self.other2, (0, 0))
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python pygame rotation

0
推荐指数
1
解决办法
5875
查看次数

String ...和Void ...关键字是什么意思?

是什么区别String和String...与之间有什么区别Void,并Void...在这方面?

class AddStringsTask extends AsyncTask<Void, String, Void>{

        @Override
        protected Void doInBackground(Void... unused) {
            for (String item: items){
                publishProgress(item);
                SystemClock.sleep(200);
            }
            return(null);
        }

        @Override
        protected void onProgressUpdate(String... item){
            ((ArrayAdapter)getListAdapter()).add(item[0]);
        }

        @Override
        protected void onPostExecute(Void unused){
            Toast.makeText(Cap15Asyncer.this,"Completed!" , Toast.LENGTH_SHORT).show();
        }   
    }   
Run Code Online (Sandbox Code Playgroud)

java android

0
推荐指数
1
解决办法
745
查看次数