标签: native-methods

如何使用 `defineProperty` 创建只读数组属性?

我将以下内容作为模块的一部分(出于问题目的而简化了名称):

在“module.js”中:

var _arr;

_arr = [];

function ClassName () {
    var props = {};

    // ... other properties ...

    props.arr = {
        enumerable: true,
        get: function () {
            return _arr;
        }
    };

    Object.defineProperties(this, props); 

    Object.seal(this);
};

ClassName.prototype.addArrValue = function addArrValue(value) {

    // ... some code here to validate `value` ...

    _arr.push(value);
}
Run Code Online (Sandbox Code Playgroud)

在“otherfile.js”中:

var x = new ClassName();
Run Code Online (Sandbox Code Playgroud)

通过上面的实现和下面的示例代码,arr可以通过两种方式实现向 增加值。

// No thank you.
x.arr.push("newValue"); // x.arr = ["newValue"];

// Yes please!
x.addArrValue("newValue"); // Only this route …
Run Code Online (Sandbox Code Playgroud)

javascript arrays native-methods properties

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

使用Java管理基于ZIP的压缩文件

我知道Java本身支持在ZIP文件中导航和打开压缩文件的能力,因为这就是JAR文件.如何利用它来制作和管理基于ZIP的文件(用于保存程序的状态)?

请注意,我正在进行的项目旨在完成其目标,没有任何外部图书馆.所有库都必须已包含在Java 1.6或1.7中.

java zip native-methods file

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

如何在使用jna和CreateProcessW时获取进程输出

我试图弄清楚如何从我用CreateProcessW创建的过程中读取标准输出/错误.我查看了文档,谷歌搜索并搜索了这个列表,但我找不到好的指针/样本:)

这是我到目前为止所提出的(它在Windows上运行正常,它是我的java代码中的相关代码段):

Kernel32 kernel32 = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class); 
Kernel32.StartupInfo startupInfo = new Kernel32.StartupInfo(); 
Kernel32.ProcessInfo processInformation = new Kernel32.ProcessInfo(); 

if (!kernel32.CreateProcessW(null, new WString(command), null, null, false, 
  DETACHED_PROCESS, null, new WString(dir.getAbsolutePath()), startupInfo,     
  processInformation)) { 
        throw new IOException("Could not start process. Errno: " +    
            kernel32.GetLastError()); 
} 

kernel32.CloseHandle(processInformation.hProcess); 
kernel32.CloseHandle(processInformation.hThread); 
Run Code Online (Sandbox Code Playgroud)

那么......我如何从该过程中获取输出?任何人都已经这样做并且关心分享样品吗?

谢谢你们提前帮助.

java native-methods createprocess jna

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

未找到本机方法org.opencv.core.mat.n_mat-Android

我在处理Mat时遵循了所有步骤,包括在调用时将其添加到AsyncTask但仍然是相同的错误,这是找不到本机方法org.opencv.core.mat.n_mat

这是代码:

package com.example.myfirstapp;

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import org.json.JSONException;
import org.json.JSONObject;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Mat;

import com.example.myfirstapp.RegisterMarkerMain.ProcessImage;

import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.util.Base64;
import android.util.Log;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; …
Run Code Online (Sandbox Code Playgroud)

android opencv native-methods unsatisfiedlinkerror

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

如何正确调用类库中的P/Invoke方法?

我在Visual Studio 2015解决方案中有多个项目.其中一些项目执行P/Invokes,如:

 [DllImport("IpHlpApi.dll")]
        [return: MarshalAs(UnmanagedType.U4)]
        public static extern int GetIpNetTable(IntPtr pIpNetTable, [MarshalAs(UnmanagedType.U4)]
        ref int pdwSize, bool bOrder);
Run Code Online (Sandbox Code Playgroud)

所以我将所有的P/Invokes移动到一个单独的类库中,并将单个类定义为:

namespace NativeMethods
{
    [
    SuppressUnmanagedCodeSecurityAttribute(),
    ComVisible(false)
    ]

    public static class SafeNativeMethods
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern int GetTickCount();

        // Declare the GetIpNetTable function.
        [DllImport("IpHlpApi.dll")]
        [return: MarshalAs(UnmanagedType.U4)]
        public static extern int GetIpNetTable(IntPtr pIpNetTable, [MarshalAs(UnmanagedType.U4)]
        ref int pdwSize, bool bOrder);
    }
}
Run Code Online (Sandbox Code Playgroud)

从其他项目中,此代码称为:

 int result = SafeNativeMethods.GetIpNetTable(IntPtr.Zero, ref bytesNeeded, false);
Run Code Online (Sandbox Code Playgroud)

所有编译都没有错误或警告.

现在在代码上运行FxCop会发出警告:

警告CA1401更改P/Invoke'SafeNativeMethods.GetIpNetTable(IntPtr,ref int,bool)'的可访问性,以便从其程序集外部不再可见.

好.将可访问性更改为内部:

[DllImport("IpHlpApi.dll")]
[return: …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke native-methods

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

使用 powershell 更改屏幕方向 - 注册表值存储在哪里?

来自瑞典的海吉,

我正在尝试参考帖子中的代码:Powershell script to change screen Orientation

该脚本有效。目标是确保旋转为横向(默认)或纵向顺时针 90 度。

我需要将当前代码更改为仅允许 2 个值,或者确保脚本仅运行一次。

不管怎样,我需要知道 CDS_UPDATEREGISTRY 的注册表项存储在哪里。尽管我无法弄清楚每次轮换的值更改存储在注册表中的哪个位置?

有谁知道这些值存储在哪里?

代码:

Function Set-ScreenResolutionAndOrientation { 

<# 
    .Synopsis 
        Sets the Screen Resolution of the primary monitor 
    .Description 
        Uses Pinvoke and ChangeDisplaySettings Win32API to make the change 
    .Example 
        Set-ScreenResolutionAndOrientation         
#>

$pinvokeCode = @" 

using System; 
using System.Runtime.InteropServices; 

namespace Resolution 
{ 

    [StructLayout(LayoutKind.Sequential)] 
    public struct DEVMODE 
    { 
       [MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
       public string dmDeviceName;

       public short  dmSpecVersion;
       public short  dmDriverVersion;
       public short  dmSize;
       public short  dmDriverExtra;
       public int    dmFields;
       public …
Run Code Online (Sandbox Code Playgroud)

native-methods screen-orientation dev-mode

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

是否可以在接口中实现本机方法?

您经常听说接口中的方法没有实现。然而,在 Java 8 中,可以实现默认方法。但我很感兴趣。是否可以本地实现接口方法?(native方法)。

当面试问题被问到“是否可以在接口中实现方法?” 答案 - 您可以实现本机方法,并且从 Java 8 开始可以定义默认方法。” 这个答案正确吗?

java native-methods interface default-method

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