From e08f1a596d09207d5bb7adbb3cfd3632ce08b9a1 Mon Sep 17 00:00:00 2001 From: kjqwer <2990346238@qq.com> Date: Tue, 1 Jul 2025 20:36:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MediaControl.exe | Bin 0 -> 35328 bytes MediaControl.ps1 | 351 +++++++++++++++++++++++++++++++++++++ OpenProcessDirectory.exe | Bin 0 -> 31232 bytes README.md | 57 ++++++ open_process_directory.ps1 | 165 +++++++++++++++++ 5 files changed, 573 insertions(+) create mode 100644 MediaControl.exe create mode 100644 MediaControl.ps1 create mode 100644 OpenProcessDirectory.exe create mode 100644 README.md create mode 100644 open_process_directory.ps1 diff --git a/MediaControl.exe b/MediaControl.exe new file mode 100644 index 0000000000000000000000000000000000000000..d2d5c7f0d8e2f8748e8f0a485fe15eef849b8b1b GIT binary patch literal 35328 zcmeHw349#Iv3Jkxsnuc4u1;IF$MV72mgEy+zy`~bY!n|7l6--Uyp~4N#;YB%yRt2e zKnnK_2@p)Uk8ocJw+$qDNqBi7*O!DG4@mexvYjt?LeBT#`&aeM?(A9ylDse9`{no6 z-kPrJ>gww1>h9{EnbrC;t`#mJgd5-Y-V@?kT^ABO3j?z((XCBFtW#X#oK=xN zySASQRmoTKg`f)jlKSZFxa#=cfiG#N}5==5=kl@|$7%>Of23zaOQ z19CT0`VJv(A|vE}J}*Q;F73nMdRlen_5(l7QLZj!>`eiG@_Yc~aa%3Df$>KdVny4`_<7vGQL>-emMLFy7l%mgFr`gvrMtV{8Ad{zpv%7Jq7TCyuXq?;-{;*UFp z*tT2<1vtccuSMFJLmVIOGdWx+L}1=DSGb6-7l*4Mq$V(Z@ASpVNkj>wKLTM5K;k`< zlyHzpApoRHC|wFLZ&kRA(&Yfj3L+3|C6OirAU%cBRg^P1Je4k}bsAlFhG(GG+T!`X z^6+#J=7e>?+TVZ=8O#T@0`t(M&_b`c5sk%vZTdT5cz~Bg&qOvZvvAp3z6Gh-k^oB( zA$c6G`9c4?r6`~V{YNqM4SV2|oRKZ6Zx|iu*8By*JgabCndHTlv+@dqfp<$$Tn&;6 zRAb+;kEGce^$lZCNR-s-8_u&)s;h4}Ks5wHZm-Xu7j%cwH18Zp%2wnkm6Kr<4tdH# z-ucP0kZ=A*&7*lWUwAIaK2E`2fqgCrcc5s$d-|l#9E$!cn6`6z@tI}G`6x6BjTFsS zz9r<-d^r^_x=HgQ!>f67R6J$Rd+)ucdC+IndGLlBT*9>g(s5QvPa=1c1oWjx454Bb zed(&`EPGeMe|CUCS$

%dyxS>yIq?y%9xoi!fc^nx^A!FchG{O|%W*Z6(<2m}IM zNGMo!W?cjf0vF@rb4|8tN-hB^eaa&mVRe{FL!+n%C%M>z7A~|~?_%;|9XL4|@~L|k z7TZQ}F?oS9&vwe7&vFVfpu;H$B?*>O*ygpIf>07{IfXAj=(5DPP^Ci*p$;*GI(&=J zjF`Lvhv%z24AcIu@(8uPJmeuahaJ>l-XwSU1ZXl0%+1(GfPuISm+8f4Z29)EoBTE} z=81nrHz41(XW8Oj%M4cYaUp#zq8ziNv6T&iYMuz3x{anA ziRB07gfmHH-Ed*0R8}f{68Pqol}Xlupz0`C7wA#bD?<1Dxoel62 zjPvxo<1RB#MwRYzzU0m^7TLD6#cW&pL(eBPX*%W;nok|`3FTT9Z7JXCm|2L=s**G8 zIi@V+nLkK#2BrYa7h#$s$W^(|eQu`F4C3f}CzZ_YV9N0Y-zbT(=Lbu##W!jmOc)-` zW9hSa#G2?Z?%^#or>g?7|rz0FZKcA!`H*IlPcHA&nVqHC?bet>LR0K8>!d zCzdh_akS~br-{lN@X~DO&G%K*xqP*1*}QVAJ!!soJ|y4oj>R`k4X@?ug$wPApnm$O z(+h^N+`852MZ;KZ`HDLEiY1n>SX3Ac^98BLxJTEJtr;S$o8J%K`+X0`*%FDdYu z9Y}D2n!;~k(pAD6K`5AS=WHU(Z*Ior#0rctzqtj;!UU27(|3e|!C-hR2nlrZK==%# z!c-#U*4*V+p>vf`NDGza-KB-hGcCGa0u4&e+Xl46+)hNeUx|4ZrMy@y6X@rGkl$x^ zf+CwTRZXC`2P8@JT?y|~!aI;{!sM8Kc2Zft=9leI-#A6{=Y_k7n5VfDsAE7cfx;#5 z{;Mzwlu(IQQl>$x60;jzbKdZT0$Si4xvI{;2xSaM8OfBwBBq4$y_ORBNw5UW9)M+M zk?c@GNvP2OE%duIVYnArC;kEM;QtoFF(>i!AUc~@ph}Ee<1_nEP_{c?O$Q94IW zJY)-GF`>dYgi~VeP4hcc?xq}I?jnIjT2ZKA{$ghf%hbegA<`nnNEzz6lF%g8?58r5 zv`L`?+qMN6+oETRwc>N&uyL@R)bOA0z4u0erq%dBF+q9Fi!oh~PNdKG@CBP_K!12} zT?w<}A{yXu6w9~ZT8b;V0MRc8Y{&O?&~1Js1%e~-B_w`@FO{Ru6s$3~0uLNL-c&ix z$^yv&qtg*ACa zZcu&>${VgZ@LpeHD}?fRII$gySlv^&>=7zd$lXITNLB~sS-9OZm?KITRaitVkli)J zJc_F2$X#@-wrwYqrg?XufcbHN`Qc*~IGYPdYY-=tWpl1UMF0Aw7!O(@ELtcns^w!i zi28LLx3eD?!@rl~Yx^;>#ctpy;`$h_7z;ce;M(GA!2bo;tAW`3p@lB-6lnR!^m~tN zvA4)u*;!knCWfJ~V_pu-U*Mn>S&LIpEpjJrpe`YImFym#pge&RxaR(h5SkzIy|P=q z3Ftf!u%%Rbr*GpyQ?{VUlIP_`DB$%aFF?5hKiPxY@YsiFL(P9b?Wf7{g|LUbAB~~5 zV49)+(UKQ}7LeO=ioR(lHN9|&FMJUa^II&+v?VjW=Eb0tE&8rkrpmXPmw=G?0(HQp z#QZ#%7b8*g1U3wuGA|>JuckR}@*;*)#3a;Rn66u;jU)msioX;wA9+Q{vg~9whxCIFqvMqjnWf{0Y}--g&^DsY^K$Ft+&Yys{8L7M z8qu81apFG2%kD%-&2Bu$mMdXf`l#WnP{h0%U>KG~@W}Wzgu_O_uchQHPF{zk>KfJw zaSzYH1%2oeb&!L8)YN@Ms#QzosrzOlHM@559N3bGNkrM+@F!4yc3_zDyz}6SR3Tld zBDzv7^Cl;1p)jFbL0#FDvgy;4pF~l#T>k4(_mK|e<~B%`X%_{2-gyZbK)Y)56YC)* zc|D4q1C{5H{f#_UpL(M%R&b{3gAlf{^wMNXK>V$9AW z&&*^oW@l07X0jNwv#7^2S&Z3P)3UM{v$LjWWibW=A4k+`n1>S}glz&R?A=K2^&E8{ zy4<}FW58|R2n)|q_bouW-24>v5@H*dK!4Neu2vFA#?UeOK6SVjEIxG~MzwpG%KO~I zR7%}f1L&s2nl#g%>5*pms?b%K$yVJQC}roE}*xm`{tsUD}@cq6t{UZ zc+F1}xP`#21a1SEce%|M$nf1xxpxp~C6-Mt^G;lA3RFjnP$kD`+r4N6wIejSBs8TY zRF&+3j-ja(QhIT8b>3YlTA)o$!l}K(q>@*g%Bm$#1f@`$T9&*UEW;4!4&Q@R$-CZe zH%CzLgmSifiYB}RcKR($!uCh_(9|hlfks|+DTf) zyWU+S>md?Qu9b%$rt%eRQHXgYgPD&aZ9YbX$tXDWU2iWHd>n+(WNotf1QN;566T@l z)>~60!zAzgJUS;ZKZh({GiHapwLjN9=95$aD|vv<4Yes!W?x$76m5$6G;+&A{<2VB zS;&gI^3~AvvXH*at-z+!HT`DVE+pD9RLjH9fW6jNp14X)`Ly&F4q~Y)`I^R@4O(gP`*qSst49`aNz)DJ;La{Hl*o!D_9# zYcBXS{@EA{7gP8L-v%10`oU$ftn>??@rTerUBiXK_>yd zGL6ZDu(; zp!r3V09KKBO_D1$4d~>=Pb4}ei>oT}XGxx_<%4Tl;$4Y`{{>RaF9FP%4@Z-kn{+YrEmvZp+aphbj}dQI}kbJgt(&@O<=!@YNJ2UZJcjkrnv`HV z=q&2bm3ypvxp(7*{eI6nHgfD_t{t$l`zE6Qx;mydQ z%ro)*8t8LCM>HZR;s2SH+ zRtE-?(Ri=kK9o!u{U>K(b!~(3RJ7lyYmTRkggMY|Bz8x;jO59Iz`)?nShP#;ibax1 zeZA2gjWn3?RKkqu`vN*XXEw%S&HV#rA{DM4Od5$Li|e{$vFf?oIoB$kOhr-J}oH{#vvjbt*?YlJOQ-{yFCjXoHSr}Xv7-Wr>8Piq8s-P34{(YYsc4S%N+ zt6^Pf;czmQAp67y8mO%sBK<~L1@OMhyX`)kF&1CBT zyHU}&MkBc^We!-T{X1J`c?ZO{_ZhL+1VU{uHRH*Y^q#UHqYows*9&Qe{hIi3x_?ZZq0#jW!;>{r!=6cbG?6m&wRnYcSJ*Ua&xy z^UT<#kB{GZ<&j(OI`rVD#;&>hmj|zuGtb)xZ$5mZhrgO2M>Mv(eXPjk?nZz_`Sbq=8{U2F6# zr?Tgxx-&3k*67w8HaBe9RA0VaUv$D;%k@b+r(j2m{$8w{B=@ZEtR8Z2az#@u#lH@!#>A z9vi#%GvklkJ$B3ehhMt(@SRsOuPol!)ZWn6+}hFHvLP+u_It;kefIEuqel;g!!LdM z(EV3PffGqqhjb@Hrx?hrd zBC({w!e^esmjPOX!)KDp*Ip+ZSk3Kl7>Y(gq^nO4&l+I&q{j%eEaDtO zv+(30;xV!krpww^3#+AoM7IUhHYE~fqF#Ex?4j5YMQhRcpzKOAEe&2HG{hNtwKZO_0?2sQp7N!ipJZ!Rt=DFzlLj+pCiJaX$IU(Iz9qqO z7*mQq2_rR#SaBA)W}3|&>BPXqnfl=uFB-f2fnOfHS?VIEI863O?z)LNX7x~nm1DPa z_04@o!l-T8`7xs_rSH>cb=IwqMB~zHI-;o<0%+rGy*j5|)s~WMLl*3`5K-UHdLPDe zQvVM&SjJdK8A@hxycV|yx+$eJDBZ(1C?_AxB?Ikw;m7}VuXf=5PfKK#-p zV=p~4e$_MMH$I1XOG>Z?B?6;k%lccVz`t&mnw9Lsj-_ib)f!3l!8xiMPujL9vZs3+ zls+f`4idk7R z^+S(bHumC0Z$CTo_On+Ue)IvkOGaEd_UM(gnP%V2Dk7WM9y5#qy|&%xGUMGzeQ_3x zJuoJiU8wP0krZZT87L4=AK5KD#bREVXhe+N^TgpN@5QVa#&puOx62ryI0UNz?{Vi! z|B=En^IK+}r5tGp2@Nd34jr=UAHVEH!~qoEWly}$F$YDQUY@DmZhWR{ik&inQ!^bI zL}Jl%3}^WCeiMWhP-pA%*F{V@WjW@O(G~?J9L9`)_RjHJE|WyWDOMjmdI9$=gSvmr z?2#TDauRR^8Fq|WYXwO5I_jJi(xvT8M<djx7n-K^=RHc__y*)9mTQ2YIG*fE}~bCmu=JOIOD8 z&g4$9PDZz%bdo&Vbey*2GQ7`$liVYa0sg9n@BuI_yS(%N<-ySpTzT!`LRICicv-8B zbsoeujDPBB>^+ZMzyAZ)x$Gr{y=Vi@e>)P9u3aBI3bE87zV5trO?}^LciTA^*`{ojwlzr*-Pqgt0qn4kkaeV_*J{aqKL;{%M^%%b5RY=gvB` z|EG2EcHGAK;0YUdEXN;Ls^O}hM(`m)o2|7b_1TS)&z{);>3&mO=z``Gi>92q%q z_{HloTU$Ehvz%F;XR|j^ba5u%R5oyfI*j`?e9wHvLhCLz=WoJ}xI2^=%;UF|S+{f_=--oczgB^Pbpy#o`k8Vb-L9W$DX={d7`p~HTkn?{vS8X(^xS7h^e}E19e(s4 z=>^0`%Hfmyj0w@$+bA({HW^>$qI5c%WX%U)Wk;5^7E7n2MMHjY6N=Xcrjymu^zoZs zJao_V2ZWeEf#TW$SFygS%Eg`WBchn{^{B0AX*xc*QZTYSk+*xJ{My zv<*=w=m|&bb)DuFYg=-xo^zN)@;i+(fqZhgv|e~PC}XJ!m>nh|;g(Udnh_Yg{Px2a zym08U=f+3wvka-ryY<#NQqI2Han8nVvTqrt4;995c`$tpCk4s#8~Ze3;Xk>|lWG`>WR9in%`wiB&@X)cC@aJR z1BX8SB%T?t&2lMDVsT3s^s&bdj$L%`FArWuN0yiFAHVEAoY1A$q5y5@XRRMsUi0J+o|jWLpL+MyynLX4p1p(~q{DNCVi&%}_%6T~ zPp0!TbwsD-os>#VC+{879L zY`RjR1jJm13jw|2c;!`;Zw3sAN15^#Q@kqCuVHvI!{0Le3t&Jj^G@}8MU(eAr2D-a zkUqyt{GVX>B zzXiHi{GM}{mr?E(K(BbJ?CLVF_%dKXyk189`Q=1!DknLeNC(7K3?E?lqw<%_1LCLU z)E0jQX?1+X+=_r$!|4u&QNSYcRK<-IMdAR%FEIQLU_kt_g4$JDN$KM%sjk(PR99~$ zwdH)Iz2Xt3{HXHABJxJ*lXBD*iz#^b$^)7rf_U-bWaQ_;qo<1iuqMVl7Pgi#A20=D zWfRI3Vq8oYE(oM&P&Ht)8KY6F;oodri^Xnmmg1kpE&x_3bi75VBJXN&6pA@`hvW{V z?m(Up$MKV^#o`IB;W*I=nZ@Ej331L9J&YY!O4xkyF~&|}tQNDy=_9R52&42=_qPDo zGTi9?4s5W)O(SC`!)}IAhW!ka1ide~kBChpUv~ct@cRtM8NS2N?fF@nr___DY(iZG z=OC?!k9f*q`xTxkfNczW8J@@R28ItZe2L+!41dnh#qt2cQov~5qP*+$OOypX(@E@3_8)ZDB$63=t9!Ti9&16WCWQY?*3^67h8lTcbvSeNSRylNyK5{KCrXRU3i5 zV`2N$W?*85z~?LC9yNh!{H|)o{7vXk1t&dt* z+|>cB+roxj596(-T^4qg>v3T8>mov2Tyd)_E?5!nhdY%YIK9qTN${Xe}O$_e63i3y+YVR3@!W^7c{`nDqPCsy8xjQxj&wffFN-jYR9 zW~=XUjQ^7@Y!k4P#2FT506SUSXkjT|Tr3xNq_MM<<>Cj7jf(Ri^Hebj@1ByLDU@3! z$}Q}6U$4?2DlP00Cj<4{Y4RKE~KD zEbM&$e&qe$!mjo|ESklCTG*%jw;|7ix0uLgpYh)fOp}=StUnIUkcEATu~G~B9%JPe z_A|yRElkOaqTCY3Nb4^s9~G?<^S9+SinU_9h3(2~2DZz>E=1lsvDd<0AEvy51t>SG9>qlOz z_>F~KjJ(sudlq&l@=h0pOUX(X`wt?oO-#11?<22`f7gZbeuKPralDmRl-~@j!NTU{ zH;N9?YGJF9*FggD`AXr={PV>|i2yr0|79hEjpQ3*Q#$Xe{3x)qSju=FmD?zVJ_+>nfzW z@&Q#51aygMfNn99>BOU2X?pit6$_YtwB%(>U&Zh==4=IYi7iJ_3{c#n|0w!Cre6r? z5!V2Eh1AU{EyJUT&wxi2PXoGyQy;2Vu_#CL98HmBzrxbK$z`Pk314OUYd(_s95x#i z2V~?s>;3!FKjPYd%r%a`Z+ccK>EPsiu(VJt6mN=KU9Ty>28@e8F;tXWv7Y5I)EHJW zoWXD|!$p8maUx(`)H9`7IiQRw&B`~GpDOi`^DCrVC;c992VlK8dy;`Y(Y{H4M*0d) z--vXxav$?NO;DB+U*g<}g)6N^c5E8ywMQ1K>EE-5C-*8`reJX*X> zJzaUac&8cxe-CoM!~Aa%zxW;KrwfW{P8SqcN@P#!6KjIs+1DjohzH4efBv6%+x?<@n)`Qk+q#Qhf1Maem2wdl5?;5|@+=y1$L|hl3EO4lzc3^Bv?Ud5x}^jF>tN>RyEp1H26l_cSd<%r%uKZx7~m0top89dGEnU!Dj z)VmUuKS%nUO0vKWmA~;cyI!jNBj8snUx$6ZOLWXF?|Kwy__){#9pd;cIXCtsd6+AI z1-Mka1Gr558F0CH4{)V$!@Eusg@EgrvlaXAI=OVt5&NWD${tojZ0JL+Ne4p+#1 zs=L*_#l79V&;1p*+pA)(&%?YI;C+1wQqz#qQTlGzQ-GgyJrDSz3oodPue-hk_yeXN zcHwPp@eb$ayNRdLO*~;vFLA$u^f!I<8uz5U`vIrqJpwq7;mLWQMS67}@vO~z2I<@U z2LV@jsKz#iy$sJ|cmu-+8NS5uRfa!j=+$Iv<#VmJ^%=Ocg~8HCO_X3uuU>u=7>1R}6utlHn9l3d&@LRoGK1Vk)32 z<{@9j-ewBm$)Ks|{po-!uq#x>Dd=HUoQmC?3V%2ba1F+)0FJ2X-OaG_N{I{jK^JwZQd5*PE`xu5Y;Caxd^S zdKwj%m@x^b6^chJ#dW3P6PGA-%@cRxDzIa_Q-Mcf^*YC`3ik*)DeLn)oKd+P6vRV} zxgE5CfM|TOY4jU|@~&8(xhVnk~@U8rGr9XcbuKiOp_V$q$J z1cCd>gHn0<7K&(!5B6Jyvr9^W)W*)1jUBBUJ33FpJFV-QM4J)mw(QX|m>L*N3BCcD zO=`#6NU@kj1A=GoR}J>`7zsh|)26yDyIBluAJJ>1I#=OAJ^6aFq$MYywc{Ca$;=WN zWxfpBV48{UXdE}rlg!yLm`Iul`xd((?i>;FFxl4}M`Nv45PQzsMJzR! zCfOVC-VyB9m5RiB;Vm$MMaOGW=xM3rT4ShwcO)8%>;wzRUmw}q+BbwZ(jwN&$LWS6 zN8Slz3JS7cQpX_O!Y=?Mxu1Xv*%dhz;(3A`3e_luW|=96l;KL7$)QOmm)~Y$i^yz= z*L9`vD|@+pEEQpSIi2F{f%N;L(lN5EHL<0#t(4Ocht^IFH^!q~_(lDOzDPpUC%d9i znM&bC)y_fkrY+c8tTTF2qQe{zZPDJolvrh^Fi@#i(=$VJlAWauuNo%M?MAm~PRhZO zMdJ559F*NOIy*bX>gIJ#ogG_Sn>sgcSi7NR^9Bc{vAKP%1EopJfwnf|4*+C}w>7PA z>1g6X+`PdthG|qcwY9ah*@HU4Ga~Dg>%vUT?KA7?`dnU%oXg#4>>TXPXy`NXs}@IRKxvtU>KYP8HzoqS z|B{8!DwE8jY;3lNx0FsoGG%G}$+eBBIyF&j|AkT+gwmTASW zPVB*C$;1HU-D%0SByD&UtfYms zTWo~mP7xcR>9-BT6+^u_o+%R>;Q7zWi4DlmEE5>guK-0+*bWrC_h8w;i}XC)TX<%J za6}m~5zhqC95o1vGh}#aS^;3v986$?fnO7`MTjnl7d=#7&XWQ&os2+}>6pBaq8QN? zk&9Tre25B9(V`cJp;rFkMnEZ__UgxvM$L0z4Z=3C%E6@JY z(KkoCQ+*EnG=rmG8t^iUW`bN+iz$=kD1~v1O&JH%Bt)VVRui_BCy#8}76*-sS?#bl zKvd2O#wlrwl2JNQxDbAh9J}4bxyL?0IO=mfzh5QR&`c7 z8*7LRB-fc;yEtpZVE;}d!DvQn&Y?XTRgNofHjqufbOsc!$J!g%T$Lp5G$wW|5$rS) zIM�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 literal 0 HcmV?d00001 diff --git a/MediaControl.ps1 b/MediaControl.ps1 new file mode 100644 index 0000000..9c85e48 --- /dev/null +++ b/MediaControl.ps1 @@ -0,0 +1,351 @@ +# 全局媒体控制脚本 - 播放/暂停 +# 使用Windows API发送系统级媒体控制命令 + +Add-Type -TypeDefinition @" +using System; +using System.Runtime.InteropServices; + +public class MediaControl { + [DllImport("user32.dll")] + public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); + + [DllImport("user32.dll")] + public static extern IntPtr GetForegroundWindow(); + + [DllImport("user32.dll")] + public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern IntPtr GetDesktopWindow(); + + [DllImport("user32.dll")] + public static extern IntPtr GetShellWindow(); + + public const uint WM_APPCOMMAND = 0x0319; + public const uint APPCOMMAND_MEDIA_PLAY_PAUSE = 14; + public const uint APPCOMMAND_MEDIA_NEXTTRACK = 11; + public const uint APPCOMMAND_MEDIA_PREVIOUSTRACK = 12; + public const uint APPCOMMAND_MEDIA_STOP = 13; + + public static void SendMediaCommand(uint command) { + // 发送到桌面窗口,系统会自动路由到当前活跃的媒体播放器 + IntPtr desktopWindow = GetDesktopWindow(); + IntPtr shellWindow = GetShellWindow(); + + // 尝试多个目标窗口以确保命令被接收 + PostMessage(desktopWindow, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)(command << 16)); + PostMessage(shellWindow, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)(command << 16)); + + // 也尝试发送到当前前台窗口 + IntPtr foregroundWindow = GetForegroundWindow(); + if (foregroundWindow != IntPtr.Zero) { + PostMessage(foregroundWindow, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)(command << 16)); + } + } +} +"@ + +function Test-MediaPlayerRunning { + <# + .SYNOPSIS + 检测媒体播放器是否正在运行 + + .DESCRIPTION + 检查常见的媒体播放器进程是否在运行 + + .PARAMETER Silent + 静默模式,不输出信息 + + .RETURNS + bool - 如果媒体播放器正在运行返回true,否则返回false + #> + param([bool]$Silent = $false) + + # 检查常见的媒体播放器进程 + $mediaPlayers = @( + "Music.UI", + "ZuneMusic", + "GrooveMusic", + "WindowsMediaPlayer", + "spotify", + "chrome", + "msedge", + "firefox", + "QQMusic", + "Microsoft.Media.Player" + ) + + foreach ($player in $mediaPlayers) { + $process = Get-Process -Name $player -ErrorAction SilentlyContinue + if ($process) { + if (-not $Silent) { + Write-Host "检测到媒体播放器进程: $player" -ForegroundColor Yellow + } + return $true + } + } + + # 辅助:检测窗口标题 + $found = Get-Process | Where-Object { $_.MainWindowTitle -eq "媒体播放器" } + if ($found) { + if (-not $Silent) { + Write-Host "检测到媒体播放器窗口" -ForegroundColor Yellow + } + return $true + } + + return $false +} + +function Start-MediaPlayer { + <# + .SYNOPSIS + 启动媒体播放器 + + .DESCRIPTION + 通过快捷方式启动Windows 11媒体播放器 + + .PARAMETER Silent + 静默模式,不输出信息 + #> + param([bool]$Silent = $false) + + $shortcutPath = "D:\1awd\快速使用\应用\mus.lnk" + + if (Test-Path $shortcutPath) { + try { + if (-not $Silent) { + Write-Host "正在启动媒体播放器..." -ForegroundColor Yellow + } + Start-Process $shortcutPath + if (-not $Silent) { + Write-Host "媒体播放器已启动" -ForegroundColor Green + } + + # 等待一下让播放器完全启动 + Start-Sleep -Seconds 2 + return $true + } + catch { + Write-Error "启动媒体播放器失败: $($_.Exception.Message)" + return $false + } + } + else { + Write-Error "找不到媒体播放器快捷方式: $shortcutPath" + return $false + } +} + +function Initialize-MediaPlayer { + <# + .SYNOPSIS + 确保媒体播放器正在运行 + + .DESCRIPTION + 检查媒体播放器是否运行,如果没有运行则启动它 + + .PARAMETER Silent + 静默模式,不输出信息 + #> + param([bool]$Silent = $false) + + if (-not (Test-MediaPlayerRunning -Silent $Silent)) { + if (-not $Silent) { + Write-Host "未检测到媒体播放器运行,正在启动..." -ForegroundColor Yellow + } + if (-not (Start-MediaPlayer -Silent $Silent)) { + if (-not $Silent) { + Write-Warning "无法启动媒体播放器,但将继续尝试发送媒体控制命令" + } + } + } +} + +function Send-PlayPause { + <# + .SYNOPSIS + 发送播放/暂停命令到当前活跃的媒体播放器 + + .DESCRIPTION + 使用Windows API发送系统级播放/暂停命令,适用于所有支持Windows Media Session的播放器 + + .PARAMETER Silent + 静默模式,不输出信息 + + .EXAMPLE + Send-PlayPause + #> + param([bool]$Silent = $false) + + try { + # 确保媒体播放器正在运行 + Initialize-MediaPlayer -Silent $Silent + + if (-not $Silent) { + Write-Host "发送播放/暂停命令..." -ForegroundColor Green + } + [MediaControl]::SendMediaCommand([MediaControl]::APPCOMMAND_MEDIA_PLAY_PAUSE) + if (-not $Silent) { + Write-Host "命令已发送!" -ForegroundColor Green + } + } + catch { + Write-Error "发送命令时出错: $($_.Exception.Message)" + } +} + +function Send-NextTrack { + <# + .SYNOPSIS + 发送下一首命令 + + .PARAMETER Silent + 静默模式,不输出信息 + + .EXAMPLE + Send-NextTrack + #> + param([bool]$Silent = $false) + + try { + # 确保媒体播放器正在运行 + Initialize-MediaPlayer -Silent $Silent + + if (-not $Silent) { + Write-Host "发送下一首命令..." -ForegroundColor Green + } + [MediaControl]::SendMediaCommand([MediaControl]::APPCOMMAND_MEDIA_NEXTTRACK) + if (-not $Silent) { + Write-Host "命令已发送!" -ForegroundColor Green + } + } + catch { + Write-Error "发送命令时出错: $($_.Exception.Message)" + } +} + +function Send-PreviousTrack { + <# + .SYNOPSIS + 发送上一首命令 + + .PARAMETER Silent + 静默模式,不输出信息 + + .EXAMPLE + Send-PreviousTrack + #> + param([bool]$Silent = $false) + + try { + # 确保媒体播放器正在运行 + Initialize-MediaPlayer -Silent $Silent + + if (-not $Silent) { + Write-Host "发送上一首命令..." -ForegroundColor Green + } + [MediaControl]::SendMediaCommand([MediaControl]::APPCOMMAND_MEDIA_PREVIOUSTRACK) + if (-not $Silent) { + Write-Host "命令已发送!" -ForegroundColor Green + } + } + catch { + Write-Error "发送命令时出错: $($_.Exception.Message)" + } +} + +function Send-Stop { + <# + .SYNOPSIS + 发送停止命令 + + .PARAMETER Silent + 静默模式,不输出信息 + + .EXAMPLE + Send-Stop + #> + param([bool]$Silent = $false) + + try { + # 确保媒体播放器正在运行 + Initialize-MediaPlayer -Silent $Silent + + if (-not $Silent) { + Write-Host "发送停止命令..." -ForegroundColor Green + } + [MediaControl]::SendMediaCommand([MediaControl]::APPCOMMAND_MEDIA_STOP) + if (-not $Silent) { + Write-Host "命令已发送!" -ForegroundColor Green + } + } + catch { + Write-Error "发送命令时出错: $($_.Exception.Message)" + } +} + +# 主程序逻辑 +function Main { + param( + [Parameter(Position=0)] + [ValidateSet("play", "pause", "playpause", "next", "prev", "stop", "help")] + [string]$Action = "playpause", + + [Parameter()] + [switch]$Silent + ) + + switch ($Action.ToLower()) { + "play" { Send-PlayPause -Silent $Silent } + "pause" { Send-PlayPause -Silent $Silent } + "playpause" { Send-PlayPause -Silent $Silent } + "next" { Send-NextTrack -Silent $Silent } + "prev" { Send-PreviousTrack -Silent $Silent } + "stop" { Send-Stop -Silent $Silent } + "help" { + Write-Host @" +全局媒体控制脚本 + +用法: + .\MediaControl.ps1 [命令] [-Silent] + +可用命令: + playpause - 播放/暂停 (默认) + play - 播放/暂停 + pause - 播放/暂停 + next - 下一首 + prev - 上一首 + stop - 停止 + help - 显示此帮助 + +参数: + -Silent - 静默模式,不显示输出信息 + +示例: + .\MediaControl.ps1 # 播放/暂停 + .\MediaControl.ps1 next # 下一首 + .\MediaControl.ps1 prev # 上一首 + .\MediaControl.ps1 stop # 停止 + .\MediaControl.ps1 -Silent # 静默播放/暂停 + +功能特性: + - 自动检测媒体播放器是否运行 + - 如果播放器未运行,自动启动Windows 11媒体播放器 + - 适用于所有支持Windows Media Session的播放器 + - 支持静默模式运行 + +注意: 此脚本适用于所有支持Windows Media Session的播放器 +"@ -ForegroundColor Cyan + } + } +} + +# 如果脚本被直接运行(不是被导入),则执行主程序 +if ($MyInvocation.InvocationName -ne '.') { + # 默认使用静默模式 + Main @args -Silent +} \ No newline at end of file diff --git a/OpenProcessDirectory.exe b/OpenProcessDirectory.exe new file mode 100644 index 0000000000000000000000000000000000000000..a5ad8ea9f2da15b6427faa26a22ecec4303ae456 GIT binary patch literal 31232 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 E07PO&R{#J2 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..acb7a2e --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# 工具集 + +简单的个人脚本集合,以后脚本都存入此处。 + +## 脚本说明 + +### MediaControl.ps1 +全局媒体控制脚本,可以控制任何支持 Windows Media Session 的播放器。 + +**功能:** +- 播放/暂停 +- 上一首/下一首 +- 停止播放 +- 自动启动媒体播放器 + +**用法:** +```powershell +.\MediaControl.ps1 # 播放/暂停 +.\MediaControl.ps1 next # 下一首 +.\MediaControl.ps1 prev # 上一首 +.\MediaControl.ps1 stop # 停止 +``` + +### open_process_directory.ps1 +快速打开当前活动窗口进程的工作目录(主要通过exe快捷键映射后使用)。 + +**功能:** +- 自动获取当前活动窗口的进程 +- 打开该进程的可执行文件所在目录 +- 智能跳过控制台/终端窗口 + +**用法:** +```powershell +.\open_process_directory.ps1 +``` + +## 编译版本 + +项目包含 PowerShell 脚本的编译版本(.exe),可以直接双击运行,但主要是通过快捷键映射之后使用。 + +## 编译工具 + +### 安装 ps2exe +```powershell +Install-Module -Name ps2exe -Force +``` + +### 编译脚本 +```powershell +# 编译 open_process_directory.ps1 +Invoke-ps2exe -InputFile "open_process_directory.ps1" -OutputFile "OpenProcessDirectory.exe" -RequireAdmin + +# 编译 MediaControl.ps1 +Invoke-ps2exe -InputFile "MediaControl.ps1" -OutputFile "MediaControl.exe" -RequireAdmin +``` + +编译后的 .exe 文件可以直接运行,无需 PowerShell 环境。 \ No newline at end of file diff --git a/open_process_directory.ps1 b/open_process_directory.ps1 new file mode 100644 index 0000000..756b5ab --- /dev/null +++ b/open_process_directory.ps1 @@ -0,0 +1,165 @@ +# 获取当前活动窗口的程序目录并在文件资源管理器中打开 +# 需要管理员权限才能获取某些系统进程的路径 + +Add-Type -TypeDefinition @" +using System; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +public class Win32 { + [DllImport("user32.dll")] + public static extern IntPtr GetForegroundWindow(); + + [DllImport("user32.dll")] + public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); + + [DllImport("user32.dll")] + public static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd); + + [DllImport("user32.dll")] + public static extern bool IsWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern bool IsWindowVisible(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern bool GetWindowText(IntPtr hWnd, System.Text.StringBuilder lpString, int nMaxCount); + + [DllImport("user32.dll")] + public static extern bool IsIconic(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern IntPtr GetShellWindow(); + + public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam); + + public const uint GW_HWNDPREV = 3; + public const uint GW_HWNDNEXT = 2; +} +"@ + +# 全局变量存储窗口列表 +$script:windowList = @() + +# 枚举窗口的回调函数 +$enumWindowsCallback = { + param([IntPtr]$hWnd, [IntPtr]$lParam) + + if ([Win32]::IsWindow($hWnd) -and [Win32]::IsWindowVisible($hWnd) -and -not [Win32]::IsIconic($hWnd)) { + $title = New-Object System.Text.StringBuilder 256 + [Win32]::GetWindowText($hWnd, $title, 256) + + if ($title.ToString().Length -gt 0) { + $processId = 0 + [Win32]::GetWindowThreadProcessId($hWnd, [ref]$processId) + + if ($processId -gt 0) { + $windowInfo = @{ + Handle = $hWnd + ProcessId = $processId + Title = $title.ToString() + } + $script:windowList += $windowInfo + } + } + } + return $true +} + +try { + # 短暂延迟,确保获取到快捷键触发前的窗口 + Start-Sleep -Milliseconds 200 + + # 枚举所有可见窗口 + [Win32]::EnumWindows($enumWindowsCallback, [IntPtr]::Zero) + + # 获取当前活动窗口 + $foregroundWindow = [Win32]::GetForegroundWindow() + $foregroundProcessId = 0 + [Win32]::GetWindowThreadProcessId($foregroundWindow, [ref]$foregroundProcessId) + + # 找到合适的窗口 + $targetWindow = $null + $targetProcessId = 0 + + # 首先尝试找到非控制台/终端的前一个窗口 + foreach ($window in $script:windowList) { + if ($window.ProcessId -eq $foregroundProcessId) { + continue # 跳过当前活动窗口 + } + + try { + $process = Get-Process -Id $window.ProcessId -ErrorAction SilentlyContinue + if ($process) { + # 跳过控制台、终端、脚本相关进程 + if ($process.ProcessName -notin @("powershell", "cmd", "conhost", "WindowsTerminal", "wt") -and + $process.ProcessName -notlike "*OpenProcessDirectory*" -and + $process.ProcessName -notlike "*ps2exe*") { + + $targetWindow = $window.Handle + $targetProcessId = $window.ProcessId + break + } + } + } catch { + continue + } + } + + # 如果没找到合适的窗口,使用当前活动窗口 + if (-not $targetWindow) { + $targetWindow = $foregroundWindow + $targetProcessId = $foregroundProcessId + } + + if ($targetProcessId -eq 0) { + Write-Host "无法获取当前窗口的进程ID" -ForegroundColor Red + exit 1 + } + + # 获取进程信息 + $process = Get-Process -Id $targetProcessId -ErrorAction SilentlyContinue + + if (-not $process) { + Write-Host "无法获取进程信息 (PID: $targetProcessId)" -ForegroundColor Red + exit 1 + } + + # 获取进程的可执行文件路径 + $processPath = $process.MainModule.FileName + + if (-not $processPath) { + Write-Host "无法获取进程路径 (进程: $($process.ProcessName))" -ForegroundColor Red + exit 1 + } + + # 获取文件所在目录 + $directory = Split-Path -Parent $processPath + + Write-Host "当前活动窗口进程: $($process.ProcessName)" -ForegroundColor Green + Write-Host "进程路径: $processPath" -ForegroundColor Green + Write-Host "程序目录: $directory" -ForegroundColor Green + + # 检查目录是否存在 + if (Test-Path $directory) { + Write-Host "正在打开目录..." -ForegroundColor Yellow + # 在文件资源管理器中打开目录 + Start-Process "explorer.exe" -ArgumentList $directory + Write-Host "目录已打开!" -ForegroundColor Green + } else { + Write-Host "目录不存在: $directory" -ForegroundColor Red + exit 1 + } + +} catch { + Write-Host "发生错误: $($_.Exception.Message)" -ForegroundColor Red + Write-Host "可能需要管理员权限来获取某些系统进程的路径" -ForegroundColor Yellow + exit 1 +} + +# 等待用户按键后退出 +# Write-Host "`n按任意键退出..." -ForegroundColor Cyan +# $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") \ No newline at end of file