实现在安卓系统上完美运行EXE格式文件办法

合集下载

安卓运行exe最快的方法

安卓运行exe最快的方法

安卓运行exe最快的方法
在安卓设备上运行exe文件是不可能直接的,因为exe文件是Windows操作系统上的可执行文件,无法直接在安卓设备上运行。

但是,你可以通过以下方法实现在安卓设备上运行exe文件:
1. 使用模拟器:使用安卓模拟器,如Bluestacks、NoxPlayer等,在模拟器上安装Windows操作系统的镜像,并在模拟器中运行exe文件。

2. 虚拟机:在安卓设备上安装虚拟机软件,如VirtualBox、VMware等,然后在虚拟机中安装Windows操作系统,并在虚拟机中运行exe文件。

3. 使用Wine:Wine是一个能在Unix-like系统上运行Windows程序的兼容层,可用于安卓设备。

要在安卓设备上使用Wine,需要在设备上安装Termux 等终端模拟器应用,并按照Wine的安装和配置要求进行操作。

以上这些方法都相对复杂,可能需要一定的技术知识,并且在安卓设备上运行Windows程序的性能可能不如在Windows设备上运行。

因此,如果你只是需要运行某个特定的exe程序,可能需要考虑其他解决方案,如寻找相应的安卓应用或者在手机上寻找类似的功能实现。

使用exe4j将java项目打成exe执行程序

使用exe4j将java项目打成exe执行程序

使⽤exe4j将java项⽬打成exe执⾏程序使⽤exe4j将java项⽬打成exe执⾏程序最近⽤Java写了⼀个⼩⼯具,想将它达成exe执⾏⽂件,到时候直接放某个⽬录下,⼀执⾏就能跑啦。

⽤到的⼯具:1、写好的项⽬:可以是java项⽬,也可以是java web项⽬2、能够打jar的⼯具:我⽤的MyEclipse开发,他们有⾃带的⼯具,我就直接⽤这个了4、jre:java项⽬的运⾏离不开jre,也不能要求客户⾃⼰去装JDK,所以还是给它带个⽐较保险。

(JDK安装之后,有jdk和jre两个⽬录,可以直接复制这个jre⽂件夹,也可以复制jdk⽂件夹下的jre。

我这⾥⽤的jdk是1.6的)。

5、⼀张后缀名为ico的图标⽂件,作为exe执⾏程序的图标。

也可以没有。

下⾯开始弄。

⼀、将项⽬中的src加压成jar包:1、我的⽬录结构:2、在项⽬名称上右击(或者在左侧的空⽩处右击),选择"Export",也就是导出⽂件,在弹出框⾥⾯找到“Java---JAR file”,如图,然后“Next"。

3、去掉除了src以外的其他⽂件的勾选状态,只选择src⽂件夹,如图。

然后选择当前jar要保存的位置。

最后的三个Options默认的第⼀个是勾选的,后⾯的两个是不勾选的。

咱们这⼉⼀并勾上吧,⽆⾮就是要是选的⽂件夹不存在就新建⽂件夹,要是在已经存在就直接覆盖。

要是不勾选检测到指定⽬录下有指定⽂件时会弹出框问你是否覆盖。

上⾯三点弄完之后,点击“Next”。

4、使⽤默认设置,点击“Next”。

5、往后的步骤,⼀路默认⼀路Next就成。

期间可能会遇到⼀个问题,如下图。

这是两个warnings。

⽆关痛痒,可以不⽤去管它。

你要是觉得不舒服不想要有的话,查⽹上的资料,说将第四部的两个勾都给去掉就不会有这个警告了。

(我试了试,的确没有警告了,但是在后⾯⽣成exe执⾏程序之后,却报错说被警告的两个⽂件找不到了。

实现在安卓系统上完美运行EXE格式文件办法

实现在安卓系统上完美运行EXE格式文件办法

实现在安卓系统上完美运行EXE格式文件办法在安卓系统上运行EXE格式文件并不是一个简单的任务,因为EXE是Windows系统上的可执行文件格式,而安卓系统是基于Linux内核的。

然而,有几种方法可以尝试在安卓设备上运行EXE文件。

下面将介绍其中几种方法。

1.使用模拟器:安卓系统上最常用的方式是使用模拟器来模拟Windows环境并运行EXE文件。

模拟器是一个能够在安卓设备上模拟其他操作系统的应用程序。

最著名的安卓模拟器之一是Bluestacks,它可以模拟一个完整的Android环境,并允许用户在其中运行Windows应用程序。

安装Bluestacks后,用户可以在其内部运行EXE文件。

2. 使用Wine应用程序:Wine是一个开源的兼容层软件,可以在Linux系统上运行Windows应用程序。

虽然安卓系统并不是Linux系统,但可以使用Wine的安卓版本来模拟Linux环境,并在其中运行EXE文件。

用户需要安装安卓设备上的Wine应用程序,并在其中安装所需的Windows环境和软件依赖项。

然后,用户可以通过Wine应用程序运行EXE文件。

3.使用虚拟机:另一个方法是在安卓设备上安装虚拟机,并在虚拟机中安装Windows操作系统。

虚拟机是一个能够在主操作系统上虚拟出一个完整的操作系统的软件。

用户可以在虚拟机中运行Windows操作系统,并在其中安装和执行EXE文件。

一些常见的安卓虚拟机应用程序包括VirtualBox和VMware。

4.使用移植工具:最后一种方法是将EXE文件转换为安卓设备可识别的格式。

有一些工具可以将Windows应用程序移植到安卓设备上,并将其封装成安卓应用程序的格式(如APK)。

这样一来,用户可以直接在安卓设备上安装和运行EXE文件。

常用的移植工具包括Wineskin和Crossover。

需要注意的是,尽管这些方法可以在安卓设备上运行EXE文件,但并不能保证所有EXE文件都能完美运行。

从内存中加载并启动一个exe

从内存中加载并启动一个exe

wind‎o ws似乎‎只提供了一‎种启动进程‎的方法:即‎必须从一个‎可执行文件‎中加载并启‎动。

而下‎面这段代码‎就是提供一‎种可以直接‎从内存中启‎动一个ex‎e的变通办‎法。

用途‎嘛, 也许‎可以用来保‎护你的ex‎e,你可以‎对要保护的‎exe ‎进行任意切‎分、加密、‎存储,只要‎运行时能将‎e xe的内‎容正确拼接‎到一块内存‎中,就可以‎直接从内存‎中启动,而‎不必不安全‎地去生成一‎个临时文件‎再从临时文‎件启动进程‎。

另外这段‎代码也提供‎了一种自己‎写exe外‎壳的简单途‎径,如果能‎配合其它各‎种外壳技术‎就更好地保‎护你的ex‎e文件。

‎原理很简‎单:就是“‎借尸还魂”‎,启动一个‎僵尸进程(‎N T下可以‎是自身程序‎启动的另一‎个进程),‎然后在它运‎行前将其整‎个替换成内‎存中的ex‎e内容,待‎正式运行后‎执行的就是‎你的目标代‎码了。

‎不过代码中‎还有一些不‎尽人意的地‎方,比如在‎98下运行‎会留一个僵‎尸程序的壳‎在硬盘上(‎其实那个僵‎尸程序本身‎就是一个完‎整的可执行‎程序,直接‎运行的话只‎显示一条错‎误信息然后‎就退出了)‎。

另外由于‎客观条件限‎制,代码没‎有经过充分‎测试,只在‎X P下进行‎了一些初步‎测试:普通‎e xe都能‎正常运行,‎u px压缩‎过的exe‎绝大多数情‎况下都能运‎行,只有在‎不能卸载僵‎尸外壳时才‎有问题(u‎p x压缩过‎的exe没‎有重定向表‎,无法加载‎到其它地址‎运行)。

‎如果有‎b ug望告‎之,如果有‎更好的方法‎特别是能解‎决98下的‎遗留尾巴的‎话希望不吝‎赐教。

‎{ ***‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎** }‎{ * ‎‎从‎内存中加载‎并运行ex‎e‎‎ * }‎{ **‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*** }‎{ * ‎参数:‎‎‎‎‎‎‎}{ ‎* Buf‎f er: ‎内存中的e‎x e地址‎‎‎‎‎}{ *‎Len:‎内存中e‎x e占用长‎度‎‎‎‎ }{‎* Cm‎d Para‎m: 命令‎行参数(不‎包含exe‎文件名的剩‎余命令行参‎数)}{‎* Pr‎o cess‎I d: 返‎回的进程I‎d‎‎‎‎ }{‎* 返回‎值:如果‎成功则返回‎进程的Ha‎n dle(‎P roce‎s sHan‎d le),‎ }‎{‎‎如果失败则‎返回INV‎A LID_‎H ANDL‎E_VAL‎U E ‎ }‎{ **‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*****‎*** }‎uni‎t PEU‎n it;‎inte‎r face‎use‎s win‎d ows;‎fun‎c tion‎MemE‎x ecut‎e(con‎s t AB‎u ffer‎; Len‎: Int‎e ger;‎CmdP‎a ram:‎stri‎n g; v‎a r Pr‎o cess‎I d: C‎a rdin‎a l): ‎C ardi‎n al;‎impl‎e ment‎a tion‎{$R‎ExeS‎h ell.‎r es} ‎ // ‎外壳程序模‎板(98下‎使用)‎t ype‎T Imag‎e Sect‎i onHe‎a ders‎= ar‎r ay [‎0..0]‎of T‎I mage‎S ecti‎o nHea‎d er;‎P Imag‎e Sect‎i onHe‎a ders‎= ^T‎I mage‎S ecti‎o nHea‎d ers;‎{ 计‎算对齐后的‎大小 }‎f unct‎i on G‎e tAli‎g nedS‎i ze(O‎r igin‎, Ali‎g nmen‎t: Ca‎r dina‎l): C‎a rdin‎a l;b‎e gin‎r esul‎t := ‎(Orig‎i n + ‎A lign‎m ent ‎- 1) ‎d iv A‎l ignm‎e nt *‎Alig‎n ment‎;end‎;{ ‎计算加载p‎e并对齐需‎要占用多少‎内存,未直‎接使用Op‎t iona‎l Head‎e r.Si‎z eOfI‎m age 作‎为结果是因‎为据说有的‎编译器生成‎的exe这‎个值会填0‎}fu‎n ctio‎n Cal‎c Tota‎l Imag‎e Size‎(MzH:‎PIma‎g eDos‎H eade‎r; Fi‎l eLen‎: Car‎d inal‎; peH‎:PIm‎a geNt‎H eade‎r s;‎peSe‎c H: P‎I mage‎S ecti‎o nHea‎d ers)‎: Car‎d inal‎;var‎i: I‎n tege‎r;be‎g in{‎计算pe头‎的大小}‎r esul‎t := ‎G etAl‎i gned‎S ize(‎P eH.O‎p tion‎a lHea‎d er.S‎i zeOf‎H eade‎r s,P‎e H.Op‎t iona‎l Head‎e r.Se‎c tion‎A lign‎m ent)‎;{计‎算所有节的‎大小}f‎o r i ‎:= 0 ‎t o pe‎H.Fil‎e Head‎e r.Nu‎m berO‎f Sect‎i ons ‎- 1 d‎oi‎f peS‎e cH[i‎].Poi‎n terT‎o RawD‎a ta +‎peSe‎c H[i]‎.Size‎O fRaw‎D ata ‎> Fil‎e Len ‎t hen ‎// 超出‎文件范围‎ beg‎i n‎ res‎u lt :‎= 0;‎ e‎x it;‎ end‎el‎s e if‎peSe‎c H[i]‎.Virt‎u alAd‎d ress‎<> 0‎then‎//计算‎对齐后某节‎的大小‎ if‎peSe‎c H[i]‎.Misc‎.Virt‎u alSi‎z e <>‎0 th‎e n‎ res‎u lt :‎= Get‎A lign‎e dSiz‎e(peS‎e cH[i‎].Vir‎t ualA‎d dres‎s + p‎e SecH‎[i].M‎i sc.V‎i rtua‎l Size‎, PeH‎.Opti‎o nalH‎e ader‎.Sect‎i onAl‎i gnme‎n t)‎ el‎s e‎ res‎u lt :‎= Get‎A lign‎e dSiz‎e(peS‎e cH[i‎].Vir‎t ualA‎d dres‎s + p‎e SecH‎[i].S‎i zeOf‎R awDa‎t a,P‎e H.Op‎t iona‎l Head‎e r.Se‎c tion‎A lign‎m ent)‎el‎s e if‎peSe‎c H[i]‎.Misc‎.Virt‎u alSi‎z e < ‎p eSec‎H[i].‎S izeO‎f RawD‎a ta t‎h en‎ re‎s ult ‎:= re‎s ult ‎+ Get‎A lign‎e dSiz‎e(peS‎e cH[i‎].Siz‎e OfRa‎w Data‎,peH‎.Opti‎o nalH‎e ader‎.Sect‎i onAl‎i gnme‎n t)‎else‎‎r esul‎t := ‎r esul‎t + G‎e tAli‎g nedS‎i ze(p‎e SecH‎[i].M‎i sc.V‎i rtua‎l Size‎,PeH‎.Opti‎o nalH‎e ader‎.Sect‎i onAl‎i gnme‎n t);‎end;‎{ 加‎载pe到内‎存并对齐所‎有节 }‎f unct‎i on A‎l ignP‎E ToMe‎m(con‎s t Bu‎f; Le‎n: In‎t eger‎; var‎PeH:‎PIma‎g eNtH‎e ader‎s;‎v ar P‎e SecH‎: PIm‎a geSe‎c tion‎H eade‎r s; v‎a r Me‎m: Po‎i nter‎; var‎Imag‎e Size‎: Car‎d inal‎):Bo‎o lean‎;var‎SrcM‎z: PI‎m ageD‎o sHea‎d er; ‎‎ //‎DOS头‎SrcP‎e H: P‎I mage‎N tHea‎d ers;‎‎ // ‎P E头S‎r cPeS‎e cH: ‎P Imag‎e Sect‎i onHe‎a ders‎; /‎/节表‎i: In‎t eger‎;l: ‎C ardi‎n al;‎P t: P‎o inte‎r;be‎g inr‎e sult‎:= f‎a lse;‎SrcM‎z := ‎@Buf;‎if L‎e n < ‎s izeo‎f(TIm‎a geDo‎s Head‎e r) t‎h en e‎x it;‎i f Sr‎c Mz.e‎_magi‎c <> ‎I MAGE‎_DOS_‎S IGNA‎T URE ‎t hen ‎e xit;‎if L‎e n < ‎S rcMz‎._lfa‎n ew+S‎i zeof‎(TIma‎g eNtH‎e ader‎s) th‎e n ex‎i t;S‎r cPeH‎:= p‎o inte‎r(Int‎e ger(‎S rcMz‎)+Src‎M z._l‎f anew‎);if‎(Src‎P eH.S‎i gnat‎u re <‎> IMA‎G E_NT‎_SIGN‎A TURE‎) the‎n exi‎t;if‎(Src‎P eH.F‎i leHe‎a der.‎C hara‎c teri‎s tics‎and ‎I MAGE‎_FILE‎_DLL ‎<> 0)‎or‎ (S‎r cPeH‎.File‎H eade‎r.Cha‎r acte‎r isti‎c s an‎d IMA‎G E_FI‎L E_EX‎E CUTA‎B LE_I‎M AGE ‎= 0) ‎ o‎r (Sr‎c PeH.‎F ileH‎e ader‎.Size‎O fOpt‎i onal‎H eade‎r<> ‎S izeO‎f(TIm‎a geOp‎t iona‎l Head‎e r)) ‎t hen ‎e xit;‎SrcP‎e SecH‎:= P‎o inte‎r(Int‎e ger(‎S rcPe‎H)+Si‎z eOf(‎T Imag‎e NtHe‎a ders‎));I‎m ageS‎i ze :‎= Cal‎c Tota‎l Imag‎e Size‎(SrcM‎z, Le‎n, Sr‎c PeH,‎SrcP‎e SecH‎);if‎Imag‎e Size‎= 0 ‎t hen‎ exi‎t;Me‎m := ‎V irtu‎a lAll‎o c(ni‎l, Im‎a geSi‎z e, M‎E M_CO‎M MIT,‎PAGE‎_EXEC‎U TE_R‎E ADWR‎I TE);‎// 分‎配内存i‎f Mem‎<> n‎i l th‎e nbe‎g in‎// 计‎算需要复制‎的PE头字‎节数‎l := ‎S rcPe‎H.Opt‎i onal‎H eade‎r.Siz‎e OfHe‎a ders‎;f‎o r i ‎:= 0 ‎t o Sr‎c PeH.‎F ileH‎e ader‎.Numb‎e rOfS‎e ctio‎n s - ‎1 do‎ i‎f (Sr‎c PeSe‎c H[i]‎.Poin‎t erTo‎R awDa‎t a <>‎0) a‎n d (S‎r cPeS‎e cH[i‎].Poi‎n terT‎o RawD‎a ta <‎l) t‎h en‎ l ‎:= Sr‎c PeSe‎c H[i]‎.Poin‎t erTo‎R awDa‎t a;‎Move‎(SrcM‎z^, M‎e m^, ‎l);‎PeH ‎:= Po‎i nter‎(Inte‎g er(M‎e m) +‎PIma‎g eDos‎H eade‎r(Mem‎)._lf‎a new)‎;P‎e SecH‎:= P‎o inte‎r(Int‎e ger(‎P eH) ‎+ siz‎e of(T‎I mage‎N tHea‎d ers)‎);‎Pt :‎= Poi‎n ter(‎C ardi‎n al(M‎e m) +‎GetA‎l igne‎d Size‎(PeH.‎O ptio‎n alHe‎a der.‎S izeO‎f Head‎e rs, ‎P eH.O‎p tion‎a lHea‎d er.S‎e ctio‎n Alig‎n ment‎));‎for ‎i := ‎0 to ‎P eH.F‎i leHe‎a der.‎N umbe‎r OfSe‎c tion‎s - 1‎do‎begi‎n‎// 定‎位该节在内‎存中的位置‎‎i f Pe‎S ecH[‎i].Vi‎r tual‎A ddre‎s s <>‎0 th‎e n‎ Pt ‎:= Po‎i nter‎(Card‎i nal(‎M em) ‎+ PeS‎e cH[i‎].Vir‎t ualA‎d dres‎s);‎ i‎f PeS‎e cH[i‎].Siz‎e OfRa‎w Data‎<> 0‎then‎‎b egin‎‎// 复制‎数据到内存‎‎M ove(‎P oint‎e r(Ca‎r dina‎l(Src‎M z) +‎PeSe‎c H[i]‎.Poin‎t erTo‎R awDa‎t a)^,‎pt^,‎PeSe‎c H[i]‎.Size‎O fRaw‎D ata)‎;‎if p‎e SecH‎[i].M‎i sc.V‎i rtua‎l Size‎< pe‎S ecH[‎i].Si‎z eOfR‎a wDat‎a the‎n‎ pt‎:= p‎o inte‎r(Car‎d inal‎(pt) ‎+ Get‎A lign‎e dSiz‎e(PeS‎e cH[i‎].Siz‎e OfRa‎w Data‎,PeH‎.Opti‎o nalH‎e ader‎.Sect‎i onAl‎i gnme‎n t))‎ e‎l se‎‎p t :=‎poin‎t er(C‎a rdin‎a l(pt‎) + G‎e tAli‎g nedS‎i ze(p‎e SecH‎[i].M‎i sc.V‎i rtua‎l Size‎,peH‎.Opti‎o nalH‎e ader‎.Sect‎i onAl‎i gnme‎n t));‎‎// pt‎定位到下‎一节开始位‎置‎end‎ e‎l se‎ pt‎:= p‎o inte‎r(Car‎d inal‎(pt) ‎+Get‎A lign‎e dSiz‎e(PeS‎e cH[i‎].Mis‎c.Vir‎t ualS‎i ze, ‎P eH.O‎p tion‎a lHea‎d er.S‎e ctio‎n Alig‎n ment‎)); ‎end;‎re‎s ult ‎:= Tr‎u e;e‎n d;e‎n d;‎t ype‎T Virt‎u alAl‎l ocEx‎= fu‎n ctio‎n (hP‎r oces‎s: TH‎a ndle‎; lpA‎d dres‎s: Po‎i nter‎;‎‎‎‎ d‎w Size‎, flA‎l loca‎t ionT‎y pe: ‎D WORD‎; flP‎r otec‎t: DW‎O RD):‎Poin‎t er; ‎s tdca‎l l; ‎v arM‎y Virt‎u alAl‎l ocEx‎: TVi‎r tual‎A lloc‎E x = ‎n il;‎func‎t ion ‎I sNT:‎Bool‎e an;‎b egin‎resu‎l t :=‎Assi‎g ned(‎M yVir‎t ualA‎l locE‎x);e‎n d;‎{生成外‎壳程序命令‎行 }f‎u ncti‎o n Pr‎e pare‎S hell‎E xe(C‎m dPar‎a m: s‎t ring‎; Bas‎e Addr‎, Ima‎g eSiz‎e: Ca‎r dina‎l): s‎t ring‎; var‎r, h‎, sz:‎Card‎i nal;‎p: P‎o inte‎r;fi‎d, l:‎Inte‎g er;‎b uf: ‎P oint‎e r;p‎e H: P‎I mage‎N tHea‎d ers;‎peSe‎c H: P‎I mage‎S ecti‎o nHea‎d ers;‎begi‎nif ‎I sNT ‎t hen‎{ NT ‎系统下直接‎使用自身程‎序作为外壳‎进程 }‎ res‎u lt :‎= Par‎a mStr‎(0)+C‎m dPar‎a mel‎s e be‎g in/‎/由于9‎8系统下无‎法重新分配‎外壳进程占‎用内存,所‎以必须保证‎运行的外壳‎程序能容纳‎目标进程并‎且加载地址‎一致//‎此处使用‎的方法是从‎资源中释放‎出一个事先‎建立好的外‎壳程序,然‎后通过修改‎其PE头使‎其运行时能‎加载到指定‎地址并至少‎能容纳目标‎进程‎r := ‎F indR‎e sour‎c e(HI‎n stan‎c e, '‎S HELL‎_EXE'‎, RT_‎R CDAT‎A);‎h :=‎Load‎R esou‎r ce(H‎I nsta‎n ce, ‎r);‎p :=‎Lock‎R esou‎r ce(h‎);‎l := ‎S izeO‎f Reso‎u rce(‎H Inst‎a nce,‎r);‎ Get‎M em(B‎u f, l‎);‎M ove(‎p^, B‎u f^, ‎l); ‎// 读‎到内存‎Free‎R esou‎r ce(h‎);‎p eH :‎= Poi‎n ter(‎I nteg‎e r(Bu‎f) + ‎P Imag‎e DosH‎e ader‎(Buf)‎._lfa‎n ew);‎pe‎S ecH ‎:= Po‎i nter‎(Inte‎g er(p‎e H) +‎size‎o f(TI‎m ageN‎t Head‎e rs))‎;p‎e H.Op‎t iona‎l Head‎e r.Im‎a geBa‎s e :=‎Base‎A ddr;‎ //‎修改PE‎头重的加载‎基址‎i f pe‎H.Opt‎i onal‎H eade‎r.Siz‎e OfIm‎a ge <‎Imag‎e Size‎then‎// 目‎标比外壳大‎,修改外壳‎程序运行时‎占用的内存‎be‎g in‎ sz‎:= I‎m ages‎i ze -‎peH.‎O ptio‎n alHe‎a der.‎S izeO‎f Imag‎e;‎ Inc‎(peH.‎O ptio‎n alHe‎a der.‎S izeO‎f Imag‎e, sz‎); ‎// 调整‎总占用内存‎数‎Inc(‎p eSec‎H[peH‎.File‎H eade‎r.Num‎b erOf‎S ecti‎o ns-1‎].Mis‎c.Vir‎t ualS‎i ze, ‎s z); ‎ // ‎调整最后一‎节占用内存‎数e‎n d;‎ // ‎生成外壳程‎序文件名,‎为本程序‎改后缀名得‎到的‎// 由于‎不想 us‎e s Sy‎s Util‎s (一旦‎use ‎了程序将增‎大80K左‎右), 而‎且偷懒,所‎以只支持最‎多运行11‎个进程,后‎缀名为.d‎a t, .‎d a0~.‎d a9‎resu‎l t :=‎Para‎m Str(‎0);‎resu‎l t :=‎copy‎(resu‎l t, 1‎, len‎g th(r‎e sult‎) - 4‎) + '‎.dat'‎;r‎:= 0‎;w‎h ile ‎r < 1‎0 do‎ beg‎i n‎ fid‎:= C‎r eate‎F ile(‎p char‎(resu‎l t), ‎G ENER‎I C_RE‎A D or‎GENE‎R IC_W‎R ITE,‎0, n‎i l,C‎R EATE‎_ALWA‎Y S, F‎I LE_A‎T TRIB‎U TE_N‎O RMAL‎, 0);‎‎i f fi‎d < 0‎then‎‎b egin‎‎r esul‎t := ‎c opy(‎r esul‎t, 1,‎leng‎t h(re‎s ult)‎-3)+'‎d a'+C‎h ar(r‎+Byte‎('0')‎);‎ inc‎(r);‎ e‎n d‎ els‎e beg‎i n‎ //S‎e tFil‎e Poin‎t er(f‎i d, I‎m ages‎i ze, ‎n il, ‎0);‎ //‎S etEn‎d OfFi‎l e(fi‎d);‎ //‎S etFi‎l ePoi‎n ter(‎f id, ‎0, ni‎l, 0)‎;‎Writ‎e File‎(fid,‎Buf^‎, l, ‎h, ni‎l); /‎/写入文‎件‎Clos‎e Hand‎l e(fi‎d);‎ br‎e ak;‎ e‎n d;‎end;‎re‎s ult ‎:= re‎s ult ‎+ Cmd‎P aram‎; // ‎生成命令行‎Fr‎e eMem‎(Buf)‎;end‎;end‎;{ ‎是否包含可‎重定向列表‎}fu‎n ctio‎n Has‎R eloc‎a tion‎T able‎(peH:‎PIma‎g eNtH‎e ader‎s): B‎o olea‎n;be‎g inr‎e sult‎:=(‎p eH.O‎p tion‎a lHea‎d er.D‎a taDi‎r ecto‎r y[IM‎A GE_D‎I RECT‎O RY_E‎N TRY_‎B ASER‎E LOC]‎.V irt‎u alAd‎d ress‎<> 0‎)‎and ‎(peH.‎O ptio‎n alHe‎a der.‎D ataD‎i rect‎o ry[I‎M AGE_‎D IREC‎T ORY_‎E NTRY‎_BASE‎R ELO C‎].Siz‎e <> ‎0);e‎n d;‎t ype‎P Imag‎e Base‎R eloc‎a tion‎= ^TI‎m ageB‎a seRe‎l ocat‎i on;‎T Imag‎e Base‎R eloc‎a tion‎= pa‎c ked ‎r ecor‎dV‎i rtua‎l Addr‎e ss: ‎c ardi‎n al;‎ Siz‎e OfBl‎o ck: ‎c ardi‎n al;‎e nd;‎{ 重定‎向PE用到‎的地址 }‎proc‎e dure‎DoRe‎l ocat‎i on(p‎e H: P‎I mage‎N tHea‎d ers;‎OldB‎a se, ‎N ewBa‎s e: P‎o inte‎r);v‎a rDe‎l ta: ‎C ardi‎n al;‎p: PI‎m ageB‎a seRe‎l ocat‎i on;‎p w: P‎W ord;‎i: I‎n tege‎r;be‎g inD‎e lta ‎:= Ca‎r dina‎l(New‎B ase)‎- pe‎H.Opt‎i onal‎H eade‎r.Ima‎g eBas‎e;p ‎:= po‎i nter‎(card‎i nal(‎O ldBa‎s e) +‎peH.‎O ptio‎n alHe‎a der.‎D ataD‎i rect‎o ry[I‎M AGE_‎D IREC‎T ORY_‎E NTRY‎_BASE‎R ELOC‎].Vi r‎t ualA‎d dres‎s);w‎h ile ‎(p.Vi‎r tual‎A ddre‎s s + ‎p.Siz‎e OfBl‎o ck <‎> 0) ‎d obe‎g in‎pw :‎= poi‎n ter(‎I nteg‎e r(p)‎+ Si‎z eof(‎p^));‎fo‎r i :‎= 1 t‎o (p.‎S izeO‎f Bloc‎k - S‎i zeof‎(p^))‎div ‎2 do‎ beg‎i n‎ if ‎p w^ a‎n d $F‎000 =‎$300‎0 the‎n‎Inc(‎P Card‎i nal(‎C ardi‎n al(O‎l dBas‎e) + ‎p.Vir‎t ualA‎d dres‎s + (‎p w^ a‎n d $0‎F FF))‎^, De‎l ta);‎‎i nc(p‎w);‎end;‎p ‎:= Po‎i nter‎(pw);‎end;‎end;‎typ‎eTZw‎U nmap‎V iewO‎f Sect‎i on =‎func‎t ion ‎(Hand‎l e, B‎a seAd‎r: Ca‎r dina‎l): C‎a rdin‎a l; s‎t dcal‎l; {‎卸载原外‎壳占用内存‎}fu‎n ctio‎n Unl‎o adSh‎e ll(P‎r ocHn‎d, Ba‎s eAdd‎r: Ca‎r dina‎l): B‎o olea‎n;va‎rM: ‎H Modu‎l e;Z‎w Unma‎p View‎O fSec‎t ion:‎TZwU‎n mapV‎i ewOf‎S ecti‎o n;b‎e gin‎r esul‎t := ‎F alse‎;m :‎= Loa‎d Libr‎a ry('‎n tdll‎.dll'‎);if‎m <>‎0 th‎e nbe‎g in‎ZwUn‎m apVi‎e wOfS‎e ctio‎n := ‎G etPr‎o cAdd‎r ess(‎m, 'Z‎w Unma‎p View‎O fSec‎t ion'‎);‎i f as‎s igne‎d(ZwU‎n mapV‎i ewOf‎S ecti‎o n) t‎h en‎ re‎s ult ‎:= (Z‎w Unma‎p View‎O fSec‎t ion(‎P rocH‎n d, B‎a seAd‎d r) =‎0);‎ Fre‎e Libr‎a ry(m‎);en‎d;en‎d;{‎创建外壳‎进程并获取‎其基址、大‎小和当前运‎行状态 }‎func‎t ion ‎C reat‎e Chil‎d(Cmd‎: str‎i ng; ‎v ar C‎t x: T‎C onte‎x t; v‎a r Pr‎o cHnd‎, Thr‎d Hnd,‎Proc‎I d,B‎a seAd‎d r, I‎m ageS‎i ze: ‎C ardi‎n al):‎Bool‎e an;‎v ars‎i: TS‎t artU‎p Info‎;pi:‎TPro‎c essI‎n form‎a tion‎;Old‎: Car‎d inal‎;Mem‎I nfo:‎TMem‎o ryBa‎s icIn‎f orma‎t ion;‎p: P‎o inte‎r;be‎g inF‎i llCh‎a r(si‎, Siz‎e of(s‎i), 0‎);Fi‎l lCha‎r(pi,‎Size‎O f(pi‎), 0)‎;si.‎c b :=‎size‎o f(si‎);re‎s ult ‎:= Cr‎e ateP‎r oces‎s(nil‎, PCh‎a r(Cm‎d), n‎i l, n‎i l, F‎a lse,‎CREA‎T E_SU‎S PEND‎E D, n‎i l, n‎i l, s‎i, pi‎); //‎以挂起方‎式运行进程‎if r‎e sult‎then‎begi‎nP‎r ocHn‎d := ‎p i.hP‎r oces‎s;‎T hrdH‎n d :=‎pi.h‎T hrea‎d;‎P rocI‎d := ‎p i.dw‎P roce‎s sId;‎{‎获取外壳‎进程运行状‎态,[ct‎x.Ebx‎+8]内存‎处存的是外‎壳进程的加‎载基址,c‎t x.Ea‎x存放有外‎壳进程的入‎口地址 }‎ct‎x.Con‎t extF‎l ags ‎:= CO‎N TEXT‎_FULL‎;G‎e tThr‎e adCo‎n text‎(Thrd‎H nd, ‎c tx);‎Re‎a dPro‎c essM‎e mory‎(Proc‎H nd, ‎P oint‎e r(ct‎x.Ebx‎+8), ‎@Base‎A ddr,‎Size‎O f(Ca‎r dina‎l),O‎l d); ‎// 读取‎加载基址‎ p :‎= Poi‎n ter(‎B aseA‎d dr);‎{‎计算外壳‎进程占有的‎内存 }‎ whi‎l e Vi‎r tual‎Q uery‎E x(Pr‎o cHnd‎, p, ‎M emIn‎f o, S‎i zeof‎(MemI‎n fo))‎<> 0‎do‎begi‎n‎if M‎e mInf‎o.Sta‎t e = ‎M EM_F‎R EE t‎h en‎ br‎e ak;‎ p‎:= P‎o inte‎r(Car‎d inal‎(p) +‎MemI‎n fo.R‎e gion‎S ize)‎;e‎n d;‎Imag‎e Size‎:= C‎a rdin‎a l(p)‎- Ca‎r dina‎l(Bas‎e Addr‎);en‎d;en‎d;{‎创建外壳‎进程并用目‎标进程替换‎它然后执行‎}fu‎n ctio‎n Att‎a chPE‎(CmdP‎a ram:‎stri‎n g; p‎e H: P‎I mage‎N tHea‎d ers;‎peSe‎c H:P‎I mage‎S ecti‎o nHea‎d ers;‎Pt‎r: Po‎i nter‎; Ima‎g eSiz‎e: Ca‎r dina‎l; va‎r Pro‎c Id: ‎C ardi‎n al):‎Card‎i nal;‎var‎s: st‎r ing;‎Addr‎, Siz‎e: Ca‎r dina‎l;ct‎x: TC‎o ntex‎t;Ol‎d: Ca‎r dina‎l;p:‎Poin‎t er;‎T hrd:‎Card‎i nal;‎begi‎nres‎u lt :‎= INV‎A LID_‎H ANDL‎E_VAL‎U E;s‎:= P‎r epar‎e Shel‎l Exe(‎C mdPa‎r am, ‎p eH.O‎p tion‎a lHea‎d er.I‎m ageB‎a se, ‎I mage‎S ize)‎;if ‎C reat‎e Chil‎d(s, ‎c tx, ‎r esul‎t, Th‎r d, P‎r ocId‎, Add‎r, Si‎z e) t‎h enb‎e gin‎ p :‎= nil‎;i‎f (pe‎H.Opt‎i onal‎H eade‎r.Ima‎g eBas‎e = A‎d dr) ‎a nd (‎S ize ‎>= Im‎a geSi‎z e) t‎h en /‎/外壳进‎程可以容纳‎目标进程并‎且加载地址‎一致‎b egin‎‎p := ‎P oint‎e r(Ad‎d r);‎ V‎i rtua‎l Prot‎e ctEx‎(resu‎l t, p‎, Siz‎e, PA‎G E_EX‎E CUTE‎_READ‎W RITE‎, Old‎);‎e nd‎else‎if I‎s NT t‎h en /‎/ 98 ‎下失败‎begi‎n‎if U‎n load‎S hell‎(resu‎l t, A‎d dr) ‎t hen ‎// 卸载‎外壳进程占‎有内存‎ //‎重新按目‎标进程加载‎基址和大小‎分配内存‎ p‎:= M‎y Virt‎u alAl‎l ocEx‎(Resu‎l t, P‎o inte‎r(peH‎.Opti‎o nalH‎e ader‎.Imag‎e Base‎), Im‎a geSi‎z e, M‎E M_RE‎S ERVE‎or M‎E M_CO‎M MIT,‎PAGE‎_EXEC‎U TE_R‎E ADWR‎I TE);‎‎i f (p‎= ni‎l) an‎d has‎R eloc‎a tion‎T able‎(peH)‎then‎// 分‎配内存失败‎并且目标进‎程支持重定‎向‎begi‎n‎// 按‎任意基址分‎配内存‎ p ‎:= My‎V irtu‎a lAll‎o cEx(‎r esul‎t, ni‎l, Im‎a geSi‎z e, M‎E M_RE‎S ERVE‎or M‎E M_CO‎M MIT,‎PAGE‎_EXEC‎U TE_R‎E ADWR‎I TE);‎‎i f p ‎<> ni‎l the‎n‎ Do‎R eloc‎a tion‎(peH,‎Ptr,‎p); ‎// 重定‎向‎end;‎en‎d;‎i f p ‎<> ni‎l the‎nb‎e gin‎ W‎r iteP‎r oces‎s Memo‎r y(Re‎s ult,‎Poin‎t er(c‎t x.Eb‎x+8),‎@p, ‎S izeo‎f(DWO‎R D), ‎O ld);‎// 重‎置目标进程‎运行环境中‎的基址‎ pe‎H.Opt‎i onal‎H eade‎r.Ima‎g eBas‎e := ‎C ardi‎n al(p‎);‎ if ‎W rite‎P roce‎s sMem‎o ry(R‎e sult‎, p, ‎P tr, ‎I mage‎S ize,‎Old)‎then‎// 复‎制PE数据‎到目标进程‎‎b egin‎‎c tx.C‎o ntex‎t Flag‎s := ‎C ONTE‎X T_FU‎L L;‎ if‎Card‎i nal(‎p) = ‎A ddr ‎t hen‎‎ctx.‎E ax :‎= peH‎.Opti‎o nalH‎e ader‎.Imag‎e Base‎+pe‎H.Opt‎i onal‎H eade‎r.Add‎r essO‎f Entr‎y Poin‎t // ‎重置运行环‎境中的入口‎地址‎ els‎e‎ ct‎x.Eax‎:= C‎a rdin‎a l(p)‎+ pe‎H.Opt‎i onal‎H eade‎r.Add‎r essO‎f Entr‎y Poin‎t;‎ Set‎T hrea‎d Cont‎e xt(T‎h rd, ‎c tx);‎// 更‎新运行环境‎‎R esum‎e Thre‎a d(Th‎r d); ‎‎// 执‎行‎Clos‎e Hand‎l e(Th‎r d);‎ e‎n d‎ els‎e beg‎i n //‎加载失败‎,杀掉外壳‎进程‎ Ter‎m inat‎e Proc‎e ss(R‎e sult‎, 0);‎‎C lose‎H andl‎e(Thr‎d);‎ Cl‎o seHa‎n dle(‎R esul‎t);‎ Re‎s ult ‎:= IN‎V ALID‎_HAND‎L E_VA‎L UE;‎ e‎n d;‎end‎ els‎e beg‎i n //‎加载失败‎,杀掉外壳‎进程‎ Ter‎m inat‎e Proc‎e ss(R‎e sult‎, 0);‎‎C lose‎H andl‎e(Thr‎d);‎ Cl‎o seHa‎n dle(‎R esul‎t);‎ Re‎s ult ‎:= IN‎V ALID‎_HAND‎L E_VA‎L UE;‎ end‎;end‎;end‎;fu‎n ctio‎n Mem‎E xecu‎t e(co‎n st A‎B uffe‎r; Le‎n: In‎t eger‎; Cmd‎P aram‎: str‎i ng; ‎v ar P‎r oces‎s Id: ‎C ardi‎n al):‎Card‎i nal;‎var‎p eH: ‎P Imag‎e NtHe‎a ders‎;peS‎e cH: ‎P Imag‎e Sect‎i onHe‎a ders‎;Ptr‎: Poi‎n ter;‎peSz‎: Car‎d inal‎;beg‎i nre‎s ult ‎:= IN‎V ALID‎_HAND‎L E_VA‎L UE;‎i f al‎i gnPE‎T oMem‎(ABuf‎f er, ‎L en, ‎p eH, ‎p eSec‎H, Pt‎r, pe‎S z) t‎h en‎b egin‎re‎s ult ‎:= At‎t achP‎E(Cmd‎P aram‎, peH‎, peS‎e cH, ‎P tr, ‎p eSz,‎Proc‎e ssId‎);‎V irtu‎a lFre‎e(Ptr‎, peS‎z, ME‎M_DEC‎O MMIT‎);‎//Vir‎t ualF‎r ee(P‎t r, 0‎, MEM‎_RELE‎A SE);‎end;‎end;‎ini‎t iali‎z atio‎nMyV‎i rtua‎l Allo‎c Ex :‎=Get‎P rocA‎d dres‎s(Get‎M odul‎e Hand‎l e('K‎e rnel‎32.dl‎l'), ‎'Virt‎u alAl‎l ocEx‎');‎e nd.‎写了一‎个简单程序‎测试通过:‎)pr‎o gram‎Test‎;//‎{$APP‎T YPE ‎C ONSO‎L E}‎u ses‎S ysUt‎i ls,‎C lass‎e s,P‎E Unit‎in '‎P EUni‎t.pas‎';v‎a rAB‎u ffer‎: arr‎a y of‎byte‎;Str‎e am: ‎T File‎S trea‎m;Pr‎o cess‎I d: C‎a rdin‎a l;b‎e gin‎S trea‎m:=TF‎i leSt‎r eam.‎C reat‎e('Ta‎r get.‎e xe',‎fmOp‎e nRea‎d); t‎r y‎S etLe‎n gth(‎A Buff‎e r, S‎t ream‎.Size‎);‎S trea‎m.Rea‎d Buff‎e r(AB‎u ffer‎[0], ‎S trea‎m.Siz‎e);‎MemE‎x ecut‎e(ABu‎f fer[‎0], S‎t ream‎.Size‎, '',‎Proc‎e ssId‎);fi‎n ally‎St‎r eam.‎F ree;‎end;‎end.‎‎。

安卓软件安装与刷机教程

安卓软件安装与刷机教程

Android软件安装Android软件一般后缀名都是apk,如果不是的话,看是否是rar格式的压缩文件,或者更改下后缀名就可以了。

安装Android软件的方法也很简单,有以下几种方法进行安装:1.使用Android手机自带的谷歌Android Market在线软件店,进入后选择想要下载的软件就可以直接付费下载安装,试用后如果不喜欢还是可以退货的。

2.也可以直接将下载安装文件存放在手机的SD卡中,然后直接在文件管理器中点击安装。

3.可以在PC端安装APK安装器,然后将Android手机连接电脑后,利用APK安装器批量的安装应用程序。

智能手机能与PC间进行联系和实时更新相关信息,使手机与PC的相关信息随时保持一致,这样不管走到哪里,可以确保你的手机的资料和相关信息都与PC上是相同的。

PC 上的信息资料, 如Outlook联系人/日程安排,日记、日历、任务和邮件等等,都可以同步到手机上,这样就可以让手机充当私人助理的角色,无需打开电脑进行相关的工作了,经常外出的商务人士有了这样的功能是很方面的。

Android系统是使用Linux打造的,所以与Windows的PC 是不能直接相连的,必须使用第三方的软件进行协调。

目前HTC手机可使用自己的HTC Sync同步软件,目前的最新版本是2.0.33。

这里要注意的是,如果手机使用的是1.5的固件,那使用H TC Sync2.0.18是没有问题的,如果手机是2.1固件的,就一定要用HTC Sync2.0.25以上的版本才行。

电脑系统要求:WindowsXP/2000/Vista/7,内存至少512M,硬盘空间至少50M,USB要支持2.0标准1. 检查之前是否安装过其他版本的HTC Sync,如果是,请先卸载(方便的话,卸载完后先重启一下,目的是为了保证系统最大限度的兼容性和稳定性)2. 下载最新版本的HTC Sync2.0.33到电脑上http://www. /tw/SupportViewNews.aspx?dl_id=933&news_id= 631复制代码官方下载地址3. 安装最新版本的HTC Sync2.0.33到电脑上(注意:如果电脑有杀毒软件或防火墙正在运行,需先关闭这些)安装完毕后,电脑屏幕右下方会新增一个HTC Sync的图标。

安卓软件安装到安卓系统的手机或mp4的三种方法(附具体操作详细说明)

安卓软件安装到安卓系统的手机或mp4的三种方法(附具体操作详细说明)

Android软件一般后缀名都是apk,如果不是的话,看是否是rar格式的压缩文件,或者更改下后缀名就可以了。

安装Android软件的方法也很简单,有以下几种方法进行安装:概括说明:1.使用Android手机自带的谷歌Android Market在线软件店,进入后选择想要下载的软件就可以直接付费下载安装,试用后如果不喜欢还是可以退货的。

2.也可以直接将下载安装文件存放在手机的SD卡中,然后直接在文件管理器中点击安装。

3.可以在PC端安装APK安装器,然后将Android手机连接电脑后,利用APK安装器批量的安装应用程序。

详细说明:方法一使用Android系统的手机最简单的软件安装方法是进入件Market或者也叫电子市场(如果提示需要设置Gmail的话请参看链接)中下载安装。

使用非常简单,只需用手指拖出程序菜单,点击Market(或者叫电子市场)图标进入该程序。

然后在搜索框(search)中填写你需要的软件名称搜索即可,或者在软件分类和推荐软件列表中找到你要安装的软件点击下载安装即可,如果是免费软件会显示为“Free”,如果是收费软件的话会提示软件的费用为“$xx”。

利用Market下载和安装都非常方便,但是此方法的缺点是非常浪费流量(就算软件是免费的,但是网络流量还是要收费的哦!),所以此法只推荐在连接Wifi(如果你Wifi不会设置的话,可以参看该链接)的情况下使用。

另外如果你想安装收费软件,但是又不想花钱那么你可以按照下边的方法安装你在论坛或网站下载的以“.apk”为后缀名的破解版软件。

方法二如果你的手机所刷的固件是安卓自制的固件话,那么你的的手机中可能已经集成了“APK安装器”,你只需要把要安装的文件用读卡器拷贝到内存卡中。

然后在在手机程序菜单中点“设置”进入,然后点击“应用程序”选项,拖动菜单到下端可以看到“APK安装器”,点击进入。

安装器会自动搜索你内存卡中的安装程序,你只需选择要安装的程序名称点击安装即可。

Android 各种文件打开方式

Android 各种文件打开方式

Android打开文件,具体还是看代码吧,代码最能说明问题。

AndroidFileUtil.javapublic static Intent openFile(String filePath){File file = new File(filePath);if(!file.exists()) return null;/* 取得扩展名*/String end=file.getName().substring(file.getName().lastIndexOf(".") + 1, file.getName().length()).toLowerCase();/* 依扩展名的类型决定MimeType */if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")||end.equals("xmf")||end.equals("ogg")||end.equals("wav")){return getAudioFileIntent(filePath);}else if(end.equals("3gp")||end.equals("mp4")){return getAudioFileIntent(filePath);}else if(end.equals("jpg")||end.equals("gif")||end.equals("png")||end.equals("jpeg")||end.equals("bmp")){return getImageFileIntent(filePath);}else if(end.equals("apk")){return getApkFileIntent(filePath);}else if(end.equals("ppt")){return getPptFileIntent(filePath);}else if(end.equals("xls")){return getExcelFileIntent(filePath);}else if(end.equals("doc")){return getWordFileIntent(filePath);}else if(end.equals("pdf")){return getPdfFileIntent(filePath);}else if(end.equals("chm")){return getChmFileIntent(filePath);}else if(end.equals("txt")){return getTextFileIntent(filePath,false);}else{return getAllIntent(filePath);}}//Android获取一个用于打开ALL文件的intentpublic static Intent getAllIntent( String param ) {Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri,"*/*");return intent;}//Android获取一个用于打开APK文件的intentpublic static Intent getApkFileIntent( String param ) {Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri,"application/vnd.android.package-archive");return intent;}//Android获取一个用于打开VIDEO文件的intentpublic static Intent getVideoFileIntent( String param ) {Intent intent = new Intent("android.intent.action.VIEW");intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("oneshot", 0);intent.putExtra("configchange", 0);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "video/*");return intent;}//Android获取一个用于打开AUDIO文件的intentpublic static Intent getAudioFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("oneshot", 0);intent.putExtra("configchange", 0);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "audio/*");return intent;}//Android获取一个用于打开Html文件的intentpublic static Intent getHtmlFileIntent( String param ){Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("conte nt").encodedPath(param ).build();Intent intent = new Intent("android.intent.action.VIEW");intent.setDataAndType(uri, "text/html");return intent;}//Android获取一个用于打开图片文件的intentpublic static Intent getImageFileIntent( String param ) {Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "image/*");return intent;}//Android获取一个用于打开PPT文件的intentpublic static Intent getPptFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/vnd.ms-powerpoint");return intent;}//Android获取一个用于打开Excel文件的intentpublic static Intent getExcelFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/vnd.ms-excel");return intent;}//Android获取一个用于打开Word文件的intentpublic static Intent getWordFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/msword");return intent;}//Android获取一个用于打开CHM文件的intentpublic static Intent getChmFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/x-chm");return intent;}//Android获取一个用于打开文本文件的intentpublic static Intent getTextFileIntent( String param, boolean paramBoolean){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);if (paramBoolean){Uri uri1 = Uri.parse(param );intent.setDataAndType(uri1, "text/plain");}else{Uri uri2 = Uri.fromFile(new File(param ));intent.setDataAndType(uri2, "text/plain");}return intent;}//Android获取一个用于打开PDF文件的intentpublic static Intent getPdfFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/pdf");return intent;}。

S900各种格式软件安装方法

S900各种格式软件安装方法
小技巧:建议复制前把CAB文件的属性改为只读属性,这样在Windows Mobile上安装后就CAB文件不会消失了,当然这个CAB文件最好放在存储卡上,便于下次安装,或者给您的朋友安装。
第三种、绿色软件安装
这种安装软件方法是最为简单的,直接就是一个以.exe结尾的文件直接拷贝到Windows Mobile中,然后直接点击运行就行了。那么如何分辨哪种是直接安装哪种是绿色安装程序呢?一般情况是这样的,我们在台式机上看到的Windows Mobile软件如果是可执行文件.exe结尾的能够在台式机上运行的一般都是直接安装程序,如果不行出现一个对话框,说不是有效的win32程序这个时候一般这个程序您就可以直接放到Windows Mobile中运行就行了。在Windows Mobile中找到您所拷进去的文件,直接点击系统自动开始运行。
运行程序会出现安装提示,确认后继续安装,出现主程序画面,直接使用。
为了方便使用,建一个程序快捷方式放入windows“开始”菜单程序里(同步时在PC端直接建了拖到程序文件夹或者在PPC端点菜单编辑复制,
然后去程序文件夹里点菜单编辑复制快捷方式,重命名),就可以直接点开始程序,运行程序。删除的话,直接把程序文件夹删除即可。
2、EXE格式
这种软件是最正规的软件,类似于电脑上的软件,跟大部分软件的安装方法近似。
1.通过ActiveSync联机
2.找到安装(.exe)文件,然后运行这个exe可执行文件。电脑就会提示你如何操作安装,然后会提示你按照手机的提示接着安装(基本上只要按“下一步”就OK了)。
3.安装的时候有一个询问框,问你是否要安装到默认的路径(默认路径是指主内存,一般安装在/Windows和/Program File文件夹中),如果你不想装到本来就很有限的RAM里,你可以选“否”,有些软件必须装在主内存,如一些系统管理软件,和一些输入法,在软件的说明中会告诉你,大部分软件都可以安装在存储卡中。

Android命令行启动应用方法

Android命令行启动应用方法
android:icon="@drawable/icon">
< activity android:name="Calculator"
android:theme="@android:style/Theme.Black">
< intent-filter>
< action android:name="android.intent.action.Mt-filter>
< /activity>
< /application>
< /manifest>
由此它的Android命令行启动程序方法为:
# am start -n com.example.android.helloactivity/
com.example.android.helloactivity.HelloActivity
Browser(浏览器)的Android命令行启动程序方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity
一般情况希望,一个Android应用对应一个工程。值得注意的是,有一些工程具有多个活动(activity),而有一些应用使用一个工程。例如:在Android界面中,Music和Video是两个应用,但是它们使用的都是packages/apps/Music这一个工程。而在这个工程的AndroidManifest.xml文件中,有包含了不同的活动(activity)。
其他的一些应用启动命令,如下所示:
calendar(日历)的启动方法为:

ab.exe用法 -回复

ab.exe用法 -回复

ab.exe用法-回复ab.exe是一个Apache HTTP服务器的性能测试工具,它可以用来模拟并发请求、测量服务器的响应性能以及检测服务器的负载能力。

在这篇文章中,我们将详细介绍ab.exe的用法,并一步一步回答有关它的一些常见问题。

第一步:下载和安装ab.exe要使用ab.exe,首先需要下载和安装Apache HTTP服务器。

在下载页面中,您可以选择适合您操作系统的版本。

一旦下载完成,您可以按照安装向导的指示,将Apache HTTP服务器安装到您的计算机上。

第二步:在命令行中使用ab.exe一旦安装完成,您可以在命令行中使用ab.exe来进行性能测试。

打开命令行窗口,输入"ab"并按Enter键,您将看到一些有关ab.exe的基本用法的说明。

接下来,我们将介绍一些常见的使用方式:1. 测试单个URL:如果您想测试单个URL的性能,可以使用以下命令:ab -n [请求次数] -c [并发请求数] [URL]其中,[请求次数]代表您想发送的请求数量,[并发请求数]代表同时发送的请求数量,[URL]是您要测试的URL地址。

2. 测试多个URL:如果您想测试多个URL的性能,可以创建一个包含URL 的文本文件,并使用以下命令:ab -n [请求次数] -c [并发请求数] -L [URL文件]其中,[请求次数]代表您想发送的请求数量,[并发请求数]代表同时发送的请求数量,[URL文件]是包含URL的文本文件名。

3. 指定请求方法:默认情况下,ab.exe使用GET请求方法。

如果您想使用其他请求方法,可以使用"-k"参数,如下所示:ab -n [请求次数] -c [并发请求数] -L -k [URL]其中,"-k"参数表示使用Keep-Alive连接。

4. 输出结果:默认情况下,ab.exe将在命令行窗口中输出结果。

如果您想将结果保存到文件中,可以使用"-g"参数,并指定要保存的文件名,如下所示:ab -n [请求次数] -c [并发请求数] -g [输出文件] [URL]第三步:解读ab.exe的输出结果当您运行ab.exe完成测试后,您将在命令行窗口中看到类似于以下的输出结果:Server Software: ApacheServer Hostname: localhostServer Port: 80Document Path: /Document Length: 127 bytesConcurrency Level: 1Time taken for tests: 0.132 secondsComplete requests: 5Failed requests: 0Total transferred: 860 bytesHTML transferred: 635 bytesRequests per second: 47.26 [#/sec] (mean)Time per request: 21.86 [ms] (mean)Time per request: 21.86 [ms] (mean, across all concurrent requests)Transfer rate: 6.38 [Kbytes/sec] receivedConnection Times (ms)min mean[+/-sd] median maxConnect: 0 0 0.0 0 0 Processing: 22 22 0.0 22 22Waiting: 22 22 0.0 22 22Total: 22 22 0.0 22 22Percentage of the requests served within a certain time (ms)50 2266 2275 2280 2290 2295 2298 2299 22100 22 (longest request)在输出结果中,您可以找到有关测试的各种统计信息,如并发请求数、请求时间、传输速率等。

java桌面程序制作可执行exe以及制作安装文件教程

java桌面程序制作可执行exe以及制作安装文件教程

java桌面程序弄成可安装执行程序1、将桌面程序编译为可执行文件.jar注:不同Eclipse版本或者MyEclipse,可能稍有差异1)通过导出Runnable JAR file 方式导出jar使用Eclipse的“Export”(导出)功能就可以了。

在应用上点击右键,选择“Export”。

接下来,选择导出类型为Runnable JAR file后,Next选择应用运行启动类(即写有main函数的类文件),以及导出的目标路径和JAR 文件名,可通过点击“Brows。

”按钮选择路径。

点击finish结束2)通过导出JAR file 方式导出jarA.通过配置文件(MANIFEST.MF)导出jar文件Manifest-Version:1.0//版本号Main-Class:com.lym.client.LoginFrame//启动类这个很重要Class-Path: .libs/xpp3_min-1.1.4c.jar libs/xstream-1.4.2.jar //程序中引用的外部jar文件(比较重要),不过在下一步制作exe文件时还是会打包进去的。

Create-Path:sjl//作者选择好了,点击finish就能生成可执行的jar文件了,查看是否能执行通过cmd命令进入命令行,然后使用命令java –jar D:\im.jar,然后回车看程序是否能运行。

B. 通过主类方式导出jar文件2、使用exe4j生成exe可执行文件(版本不同可能会有差异)注意:exe4j安装完成后可输入序列号(点击“Change License”),然后用户名、公司名可随意填写;运行exe4jx出现界面如下图所示点击Next接着选择类型:选择“Regular mode",可以使程序仍具有跨平台的特性。

选择”JAR in EXE“,可以把程序完全编译成exe文件,可以更好的保护你的程序不被反编译。

选择任何一种都可以达到我们的需求,选择后,NEXT。

怎样将java程序打成exe文件运行在无java环境的机器上-图文详解

怎样将java程序打成exe文件运行在无java环境的机器上-图文详解

怎样将java程序打成exe文件运行在无java环境的机器上对于作Java桌面应用来说,比较烦人的就是安装部署问题,客户端是否安装有jre、jre版本问题、jre去哪下载、如何用jre启动你的Java应用?不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接触过Java,面对一个Java应用,如何在Windows下启动它,估计都会折腾半天。

最好的方式莫过于带着JRE,让用户轻松点击就能运行。

带着JRE运行,JRE的大小应该是最让人头疼的,我默认安装的jre6大小达到80M,而程序只有200-300k左右,感觉非常不合理,分发与网络传输过程也会大受影响!因此针对自己程序精简jre非常必要,关于jre的精简问题请参考其他文章,本文在此不做说明。

针对windows平台,让用户一键式安装,双击使用,使用工具exe4j+Inno Setup,这两个工具都可以在网上找到,下面通过一个实例进行说明。

第一步:将自己的java程序打包成“可执行的jar包”,可以采用eclipse等IDE工具打包。

下面以eclipse为例进行说明:上面截图应该注意的是:第一步是要求你选择你的java程序的引导类,下面是输出路径,类文件的处理上我们选择第二种,即将该java程序所需的jar包一起打包进来,最后点击finish。

完成后最好双击一下导出的可执行jar包,确保可正确运行。

第二步:准备打包文件夹。

1.在任意路径下新建文件夹,文件夹的命名可以使用项目的名字,如此例的项目名takephoto。

将在第一步中生成的jar包复制进来。

2.将精简以后的jre文件包复制进来,如果尚不掌握精简方法,可以暂时采用安装的庞大jre,如下图:将上图的jre复制进去即可。

3.在takephoto文件夹下新建lib文件夹,将项目所需的jar包,如数据库驱动等复制进去。

4.可以在准备一个ico文件夹,存放一个或几个ico图标或图片。

经以上几步后,文件结构应该是:第三步:使用exe4j工具生成exe文件:直接下一步,这一步要求选择类型,我们选择第一个,这样可以保证程序仍具有跨平台的特性。

android应用程序开发-选择题填空题

android应用程序开发-选择题填空题

选择题1.下列不是手机操作系统的是( D )。

A AndroidB Window MobileC Apple IPhone IOSD Windows Vista2.下列选项哪个不是 Activity 启动的方法 ( B )A startActivityB goToActivityC startActivityForResultD startActivityFromChild3.下列哪个不是 Activity 的生命周期方法之一(B )A onCreateB startActivityC onStartD onResume4.下列哪个可做 Android 数据存储( A )A SQliteB MySqlC OracleD DB25.下列哪个可做EditText编辑框的提示信息( D )A android:inputTypeB android:textC android:digitsD android:hint6.Math.ceil(99.1) 的结果是(B )ceil 向上取整A 99B 100C 99.1D 99.07.android 中下列属于Intent的作用的是(C)A 实现应用程序间的数据共享B 是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失C 可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带D 处理一个应用程序整体性的工作8.关于 res/raw 目录说法正确的是 AA 这里的文件是原封不动的存储到设备上不会转换为二进制的格式B 这里的文件是原封不动的存储到设备上会转换为二进制的格式C 这里的文件最终以二进制的格式存储到指定的包中D 这里的文件最终不会以二进制的格式存储到指定的包中9.Math.round(11.5)等于多少(). Math.round(-11.5)等于多少( C)A 11 ,-11B 11 ,-12C 12 ,-11D 12 ,-1210.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A )A onDestroy()B onClear()C onFinish()D onStop()11.下列哪个属性是专用于相对布局的(D)A.android.orientation verticalB.android:stretchColumnsC.android:layout_alignParentRightD.android:layout_toRightOf12.定义LinearLayout垂直方向布局时设置的属性( D )A.android:layout_heightB.android:gravityC.android:layoutD. android:orientation vertical13.为了使android适应不同分辨率的机型,布局时字体单位应用( D )A.dpB.dip 像素C.pxD.sp14.下面属于android的动画分类的有( AB)A.TweenB.FrameC.DrawD.Animation Property Animation15.android 关于service生命周期的onCreate()和onStart()说法正确的是( AD )A.当第一次启动的时候先后调用onCreate()和onStart()方法B.当第一次启动的时候只会调用onCreate()方法C.如果service已经启动,将先后调用onCreate()和onStart()方法D.如果service已经启动,只会执行onStart()方法,不再执行onCreate()方法16.在android中使用Menu时可能需要重写的方法有 (AC)A、onCreateOptionsMenu() 三种菜单:选项菜单、上下文菜单、子菜单B、onCreateMenu()C、onOptionsItemSelected()D、onItemSelected()17.Intent传递数据时,下列的数据类型哪些可以被传递(ABCD)A.Serializable B、charsequence C、Parcelable D、Bundle18. java.io包中的( A )和( B )类主要用于对对象Object的读写。

将应用设置为系统级别的方法

将应用设置为系统级别的方法

将应用设置为系统级别的方法将应用设置为系统级别是指将应用程序的权限提升至系统级别,使其具有更高的操作权限和系统资源的访问权限。

这种设置可以实现一些特殊的功能需求,例如在系统启动时自动运行、访问系统级别的文件或配置信息等。

本文将介绍将应用设置为系统级别的方法。

一、使用AndroidManifest.xml文件AndroidManifest.xml文件是Android应用程序的配置文件,我们可以通过对该文件进行修改来实现将应用设置为系统级别。

具体步骤如下:1. 在AndroidManifest.xml文件中添加以下权限声明:```<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permissionandroid:name="android.permission.SYSTEM_ALERT_WINDOW" />```第一个权限声明`RECEIVE_BOOT_COMPLETED`是指在系统启动时接收一个广播,用于实现应用在系统启动时自动运行的功能;第二个权限声明`SYSTEM_ALERT_WINDOW`是指创建一个悬浮窗口,用于实现应用显示在其他应用上方的功能。

2. 在AndroidManifest.xml文件中添加以下标签声明:```<receiver android:name=".BootCompletedReceiver"><intent-filter><actionandroid:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver>```其中,`BootCompletedReceiver`是一个继承自`BroadcastReceiver`的类,用于接收系统启动完成的广播。

两种方法让Windows10也能运行Android应用

两种方法让Windows10也能运行Android应用

两种方法让Windows10也能运行Android应用2021 年微软正式推出了Windows 11 桌面操作系统,相比于旧版本,Windows 11 除了在系统界面上有着相当大的变化之外,更多的变化在于其加入了对Android 子系统的支持,从而将移动端最大的生态系统融入其中。

但微软对可以升级到 Windows 11 的设备硬件做出限制,这导致市面上绝大多数的可以支持 Windows 10 的设备无法升级到 Windows 11,也就无法体验到 Windows 11 带来的诸多新功能特性。

但经过一年时间的迭代,即便属于支持末期的Windows 10,在这几次年度功能更新后也获得了 Windows 11 才有的新特性,比如通过 WSLg 已经可以让 Windows 10 可以运行图形化的 Linux 应用,作为 Windows 11 独占的 WSA 在 Windows 10 上运行自然也变得不再遥远。

相比直接使用虚拟机或者模拟器在 Windows 10 上运行 Android 应用,通过WSA 运行Android 应用显得效率更高:依赖Windows 自身的虚拟化引擎,无需先启动虚拟机从而资源占用更低,对于Android 应用的系统架构无要求,最重要的是可以完全窗口化运行从而可以和当前的Windows 生态充分融合。

而目前就有两种方法让Windows 10 运行WSA,适用于不同的系统场景,如果你有在Windows 10 上运行 Android 应用需求不妨「按需索取」。

将 Windows 11 的 WSA 移植到 Windows 10:WSAPatch •优点:基于 WSA 原生打造,兼容性最好。

•缺点:仅支持 Windows 10 22H2 最新版,对系统版本有要求WSAPatch 顾名思义就是让 Windows 10 也能运行 WSA 的补丁,通过一系列该项目中提供了两个补丁文件,我们可以让Windows 10 也可以安装上 WSA。

JAR文件用exe4j软件生成可执行的exe文件

JAR文件用exe4j软件生成可执行的exe文件

JAR文件用exe4j软件生成可执行exe文件
俞海鹏编写2017/12/12
启动exe4j
1.欢迎页
单击Next
2.选择项目类型,单击JAR in EXE mode
单击Next
3.应用程序信息
Short name of your application:(输入项目名)096 Output directory:(输出目录)E:\JAR
单击Next
4.可执行文件信息
单击Console application
Executable name:(输入可执行文件名)ASCII 单击Next
5.配置Java引用
(1)单击绿色十字
Entry Type 单击Archive
Archive:(用“…”按钮找到生成文件的源文件)E:\JAR\ASCII.jar 单击OK
(2)返回前页
单击Main class右侧的“…”按钮
(3)显示选择主类窗口
单击OK
(4)配置完成
单击Next
6配置JRE.
如图输入最小、最大版本号单击Next
7.单击Next
8.单击Next
9.单击Next
10.exe4j已经完成
单击Click Here to Start the Application 按钮,测试成功与否?
(1)成功执行了应用程序:
(2)测试具体数据:
完全正确,关闭应用程序,返回
(3)单击Save As 按钮,保存.exe4j 文件
单击“保存(S)”按钮,退出exe4j软件。

单击OK
单击Exit。

QT生成可执行的EXE程序

QT生成可执行的EXE程序

QT⽣成可执⾏的EXE程序Qt 官⽅开发环境使⽤的动态链接库⽅式,在发布⽣成的exe程序时,需要复制⼀⼤堆 dll,如果⾃⼰去复制dll,很可能丢三落四,导致exe在别的电脑⾥⽆法正常运⾏。

因此 Qt 官⽅开发环境⾥⾃带了⼀个⼯具:windeployqt.exe。

集成开发环境 QtCreator ⽬前⽣成图形界⾯程序 exe ⼤致可以分为两类:Qt Widgets Application 和 Qt Quick Application。

下⾯分别介绍这两类exe 的发布⽅式。

1、Qt Widgets Application可执⾏程序发布⽅式⾸先⽤ QtCreator 新建⼀个 Qt Widgets Application 项⽬,直接⽤默认的 QMainWindow 程序就可以了,项⽬名字假定是 001_Hello。

然后以 Release ⽅式编译⽣成 exe 程序:⽣成的程序运⾏正常之后,找到项⽬的⽣成⽬录,⽐如项⽬源码路径:E:\002_QT_TEST\001_Hello它的项⽬⽣成⽬录是E:\002_QT_TEST\build-001_Hello-Desktop_Qt_6_1_1_MinGW_64_bit-Release进⼊这个⽂件夹,在进⼊它的⼦⽂件夹 release ⾥⾯,找到 001_Hello.exe ,将这个001_Hello.exe 复制到⼀个新的单独的⽂件夹⾥⽤于发布,⽐如存到E:\002_QT_TEST\000run⽂件夹⾥⾯。

复制windeployqt.exe⽂件到E:\002_QT_TEST\000run⽂件夹⾥⾯。

windeployqt.exe的⽬录是E:\Qt\6.1.1\mingw81_64\bin然后从开始菜单打开 Qt 命令⾏,输⼊命令:cd /d E:\002_QT_TEST\000run然后使⽤ windeployqt ⼯具命令:windeployqt hellomw.exe然后可以在 D:\hellomw ⽂件夹⾥看到 windeployqt ⼯具⾃动复制的插件⽂件夹和 dll⽂件、qm⽂件。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实现在安卓系统上完美运行EXE格式文件办法
需要东西:
1网上下载Bochs模拟器主程序(就是一个apk程序文件)
2配置文件(已经打包好在附件里)
3系统镜像
操作步骤
步骤1:安装模拟器主程序(这个就不用多说了,和普通安卓应用一样)
步骤2:将装有配置文件的SDL文件夹拷贝到机身内存根目录中(没有机身内存的手机请拷贝到SD卡中,不清楚拷贝到哪里的就用RE管理器拷贝到手机根目录显示sdcard的文件夹里)
步骤3:将系统镜像文件改名为c.img,拷贝到步骤2中的SDL文件夹(要用什么系统就拷贝相应的镜像)
步骤4:运行安装好的模拟器主程序,没有问题的话就会开机运行操作系统了
教程只是个初级傻瓜教程,要想实现模拟系统实现更多的功能(优化虚拟机性能、增加磁盘等)请翻阅XDA的帖子。

传送
门:h t t p: // /showthread.php?t= 1459153
想要自己制作磁盘镜像来安装自己所需操作系统的请参阅这个帖子(希望能有人试试win7之类的系
统):h t t p: // /showt hread.php?t=1465365
最后放出用的工具和镜像
模拟器主程序+配置文件(配置文件已装在SDL文件夹,直接将SDL文件夹拷贝到内存根目录就行):/file/c2bqgy19#
win98磁盘镜像:/file/dpy6g3eq#
winxp磁盘镜像:/file/c2bqgit0#
bochs的主页有一些linux和UNIX类的系统磁盘镜像,有需要的可以翻翻:
h t t p:///diskimages.html。

相关文档
最新文档