查了一下,IE不支持FileList类,IE10起支持FileReader,但没有Inputfiles属性,IE上是否有其他方法获取上传的文件呢?
另外,FileReader对象IE10支持,但FileReadergetAsDataURL()要求传入一个file对象,IE10又不支持
用途在Art中Hook JNI相关函数。存在jobject jclass 参数时需要得到具体的类名。
在Art虚拟机中:
jobject在内存中表现为:art::mirror::Object,可从GetObjectClass方法中分析得到(art/runtime/jni_internalcc)
jclass在内存中表现为:art::mirror::Class,可从GetSuperclass方法中分析得到(art/runtime/jni_internalcc)
获取类名重点在art::mirror::Class类中,通过分析Class 类发现在art/runtime/mirror/class-inlh头文件中存在一个获取类名的方法
上述方法存在两个问题:
综上所述,GetName不适合获取类名
在dalvik虚拟机中存在一个方法dvmDecodeIndirectRef,可以将jobject、jclass转为对应的内存结构指针。
经过查找发现在/art/runtime/threadcc中存在一个方法DecodeJObject可以将jobject、jclass转换为对应的内存结构指针
DecodeJObject是Thread类的一个方法,通过dlsym拿到方法地址后,其表现形式如下:
第一个参数表示this即当前对象。可以通过如下方法获取Thread对象的实例
同时发现/art/runtime/mirror/classcc中存在GetDescriptor方法可以获取art::mirror::Class的类名
GetDescriptor是Class类的一个方法,通过dlsym拿到方法地址后,其表现形式如下:
第一个参数表示this即当前对象。可以通过DecodeJObject获取Class对象的实例,
在最终可以整理得到获取jclass类名的方法:
获取jobject方法就简单一点其内存结构可以精简如下:
其中klass就是Class对象的指针,最终整理后的方法如下:
上述方法太过于麻烦,后面给出一个简单的方法,可以模拟dalvik解析dex拿到类名。不早了,睡了
using System;
using SystemIO;
using SystemRuntimeInteropServices;
using SystemText;
namespace Sx_Mdi
{
/// <summary>
/// Summary description for Class1
/// </summary>
public class IniFile
{
//文件INI名称
public string Path;
////声明读写INI文件的API函数
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
//类的构造函数,传递INI文件名
public IniFile(string inipath)
{
//
// TODO: Add constructor logic here
//
Path = inipath;
}
//写INI文件
public void IniWriteValue(string Section,string Key,string Value)
{
WritePrivateProfileString(Section,Key,Value,thisPath);
}
//读取INI文件指定
public string IniReadValue(string Section,string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section,Key,"",temp,255,thisPath);
return tempToString();
}
}
}
*** 作范例:
public static SqlConnection MyConnection()
{
string sPath;
string ServerName,userId,sPwd,DataName;
sPath = GetPath();
IniFile ini = new IniFile(sPath);
ServerName = iniIniReadValue ("Database","server");
userId = iniIniReadValue ("Database","uid");
sPwd = iniIniReadValue ("Database","pwd");
DataName = iniIniReadValue ("Database","database");
string strSql = "server =" + ServerName+";uid ="+ userId +";pwd =;database ="+ DataName;
SqlConnection myConn=new SqlConnection(strSql);
return myConn;
}
由上CreateWindow()的调用可以看出,windows ce中的每次系统调用都会导致多个进程之间频繁切换,而且系统调用所涉及的数据也需要在多个进程之间迁移,这样势必会使整个系统的效率降低。其实,在系统调用的整个过程中,并没有发生真正的线程上下文切换。Windows ce内核负责把api调用转到实现该api的PSL进程。PSL进程会把进行系统调用的执行线程从一个进程迁移到下一个进程。比如说,上个例子中,虽然CreateWindow系统调用会在应用程序、NKEXE和GWESEXE中来回切换,但是在3个进程中招待的纯种是同一个线程。而所谓的“切换”只是把执行进程的虚拟地址空间映射到了Slot 0。Windows ce内核负责把应用程序中的用户态线程改变访问权限,然后把它迁移到系统进程中,在整个系统调用过程中,这个线程在3个进程中使用同一个栈和同一些寄存器。当这个线程离开PSL进程的时候,windows ce内核再把它的特殊访问权限移除。内核NKEXE系统运行时,windows ce的内核表现为NKEXE进程。NKEXE是所有windows ce的系统中都存在的核心进程,它表现了win32 API核心中进程创建加载、纯种高度、中断处理和内在管理等核心功能。NKEXE由NKLIB与OALLIB组成。NKLIB是由微软提供的,它的代码与CPU指令体系结构相关而与具体的外设无关,此种设计可使OAL尽可能小OALLIB是OEM层中的OAL代码编译后的输出。
API文件
中文名:API文件
外文名:Application Programming Interface
存在:Visual C++ 60
Windows类型:Kernel、User和GDI子系统
API:Application Programming Interface(应用编程适配器), 语言、框架以及类库对外提供的编码的适配器
使用J SE API读取Properties文件的六种方法 使用java util Properties类的load()方法示例 InputStream in = lnew BufferedInputStream(new FileInputStream(name));Properties p = new Properties();p load(in); 使用java util ResourceBundle类的getBundle()方法示例 ResourceBundle rb = ResourceBundle getBundle(name Locale getDefault()); 使用java util PropertyResourceBundle类的构造函数示例 InputStream in = new BufferedInputStream(new FileInputStream(name));ResourceBundle rb = new PropertyResourceBundle(in); 使用class变量的getResourceAsStream()方法示例 InputStream in = JProperties class getResourceAsStream(name);Properties p = new Properties();p load(in); 使用class getClassLoader()所得到的java lang ClassLoader的getResourceAsStream()方法示例 InputStream in = JProperties class getClassLoader() getResourceAsStream(name);Properties p = new Properties();p load(in); 使用java lang ClassLoader类的getSystemResourceAsStream()静态方法示例 InputStream in = ClassLoader getSystemResourceAsStream(name);Properties p = new Properties();p load(in);补充Servlet中可以使用javax servlet ServletContext的getResourceAsStream()方法示例 InputStream in = context getResourceAsStream(path);Properties p = new Properties();p load(in);完整的示例 可以参考附件文件如何上传文件 谁知道请告诉以下 只好把source都贴上来了JProperties java文件/ This program is free sofare You may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Sofare Foundation Version of the license should be included with this distribution in the file LICENSE as well as l If the license is not included with this distribution you may find a copy at the FSF web site at or or you may write to the Free Sofare Foundation Mass Ave Cambridge MA USA THIS SOFARE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY THE AUTHOR OF THIS SOFARE ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE RESULTING FROM THE USE MODIFICATION OR REDISTRIBUTION OF THIS SOFARE /package kindani;//import javax servlet ServletContext;import java util ;import java io InputStream;import java io IOException;import java io BufferedInputStream;import java io FileInputStream;/ 使用J SE API読取Properties文件的六种方法 User: SYNFORM Date: / / Time: : : To change this template use File | Settings | File Templates /public class JProperties {public final static int BY_PROPERTIES = ;public final static int BY_RESOURCEBUNDLE = ;public final static int BY_PROPERTYRESOURCEBUNDLE = ;public final static int BY_CLASS = ;public final static int BY_CLASSLOADER = ;public final static int BY_SYSTEM_CLASSLOADER = ;public final static Properties loadProperties(final String name final int type) throws IOException {Properties p = new Properties();InputStream in = null;if (type == BY_PROPERTIES) {in = new BufferedInputStream(new FileInputStream(name));assert (in != null);p load(in);} else if (type == BY_RESOURCEBUNDLE) {ResourceBundle rb = ResourceBundle getBundle(name Locale getDefault());assert (rb != null);p = new ResourceBundleAdapter(rb);} else if (type == BY_PROPERTYRESOURCEBUNDLE) {in = new BufferedInputStream(new FileInputStream(name));assert (in != null);ResourceBundle rb = new PropertyResourceBundle(in);p = new ResourceBundleAdapter(rb);} else if (type == BY_CLASS) {assert (JProperties class equals(new JProperties() getClass()));in = JProperties class getResourceAsStream(name);assert (in != null);p load(in);//return new JProperties() getClass() getResourceAsStream(name);} else if (type == BY_CLASSLOADER) {assert (JProperties class getClassLoader() equals(new JProperties() getClass() getClassLoader()));in = JProperties class getClassLoader() getResourceAsStream(name);assert (in != null);p load(in);// return new JProperties() getClass() getClassLoader() getResourceAsStream(name);} else if (type == BY_SYSTEM_CLASSLOADER) {in = ClassLoader getSystemResourceAsStream(name);assert (in != null);p load(in);}if (in != null) {in close();}return p;}// servlet used/public static Properties loadProperties(ServletContext context String path) throws IOException {assert (context != null);InputStream in = context getResourceAsStream(path);assert (in != null);Properties p = new Properties();p load(in);in close();return p;}/// support class/ ResourceBundle Adapter class /public static class ResourceBundleAdapter extends Properties {public ResourceBundleAdapter(ResourceBundle rb) {assert (rb instanceof java util PropertyResourceBundle);this rb = rb;java util Enumeration e = rb getKeys();while (e hasMoreElements()) {Object o = e nextElement();this put(o rb getObject((String) o));}}private ResourceBundle rb = null;public ResourceBundle getBundle(String baseName) {return ResourceBundle getBundle(baseName);}public ResourceBundle getBundle(String baseName Locale locale) {return ResourceBundle getBundle(baseName locale);}public ResourceBundle getBundle(String baseName Locale locale ClassLoader loader) {return ResourceBundle getBundle(baseName locale loader);}public Enumeration<String> getKeys() {return rb getKeys();}public Locale getLocale() {return rb getLocale();}public Object getObject(String key) {return rb getObject(key);}public String getString(String key) {return rb getString(key);}public String[] getStringArray(String key) {return rb getStringArray(key);}protected Object handleGetObject(String key) {return ((PropertyResourceBundle) rb) handleGetObject(key);}}}JPropertiesTest java文件/ This program is free sofare You may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Sofare Foundation Version of the license should be included with this distribution in the file LICENSE as well as l If the license is not included with this distribution you may find a copy at the FSF web site at or or you may write to the Free Sofare Foundation Mass Ave Cambridge MA USA THIS lishixinzhi/Article/program/Java/JSP/201311/19664
API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指API的说明文档,也称为帮助文档。另外,也是美国石油协会、空气污染指数、医药、空中位置指示器的英文简称。
WindowsAPI是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么这在某种程度上很象Windows的天然代码其他的语言只是提供一种能自动而且更容易的访问API的方法VB在这方面作了很多工作它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows例如,Form1PrintVB将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut这个API函数。同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click)API函数包含在Windows系统目录下的动态连接库文件中(如User32dll,GDI32dll,Shell32dll)更易理解地说:Windows这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源之外,她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由於这些函数服务的对象是应用程式(Application),所以便称之为ApplicationProgrammingInterface,简称API函数。WIN32API也就是32位平台的应用程序编程接口。凡是在Windows工作环境底下执行的应用程式,都可以调用WindowsAPI。
API分为四种类型
远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。当前应用于API的标准包括ANSI标准SQLAPI。另外还有一些应用于其它类型的标准尚在制定之中。API可以应用于所有计算机平台和 *** 作系统。这些API以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的API还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种API只处理一种信息格式,所以该情形下的信息交付API只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付API方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付API类型是比较理想的选择。
版本 2 DLL命令 取进程线程标识符_, 整数型, "user32dll", "GetWindowThreadProcessId", , GetWindowThreadProcessId,获取与指定窗口关联在一起的一个线程和进程标识符 参数 窗口句柄, 整数型, , hwnd,指定窗口句柄 参数 进程标识符
以上就是关于获取input中的file IE不支持.files 是否有类似兼容IE的API全部的内容,包括:获取input中的file IE不支持.files 是否有类似兼容IE的API、android 从jobject、jclass获取类名(API>19)(一)、windows API获取ini文件中所有项的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)