分类 扯淡 下的文章
小试mstsc进程键盘记录
DNS查询代码For Delphi{改}
这次可以把查询出的IP都列出来了
但是没有显示A cName转发等类型..
因为我用不上哪些暂时...
Function QueryDNS2(szHost:PAnsiChar; Server:PAnsiChar; Var bMuch:Boolean):PAnsiChar; Label OnExit; Var dnshdr :PDNS_HDR; dnsqer :PDNS_QER; Buffer :Array [0..BUF_SIZE-1] Of Byte; nSocket:TSocket; SerAddr:TSockAddrIn; I :Integer; nRet :Integer; dwLen :Integer; szDump :PAnsiChar; szDebug:Array [0..31] Of AnsiChar; begin ZeroMemory(@Result, SizeOf(TIPAddr)); nSocket := socket(AF_INET, SOCK_DGRAM, 0); If nSocket = INVALID_SOCKET then Exit; SetSocketIoOutTime(nSocket, 8000); SerAddr.sin_family := AF_INET; SerAddr.sin_port := Htons(SRV_PORT); SerAddr.sin_addr.s_addr := Inet_Addr(Server); if SerAddr.sin_addr.s_addr = SOCKET_ERROR then Goto OnExit; ZeroMemory(@Buffer, BUF_SIZE); Randomize; dnshdr := @Buffer; dnshdr^.id := Random(65534); //$5260; dnshdr^.tag := htons($0100); dnshdr^.numq := htons(1); dnshdr^.numa := 0; lstrcpyA(@Buffer[SizeOf(DNS_HDR) + 1], szHost); I := SizeOf(DNS_HDR) + 1; dwLen := 0; While dwLen < lstrlenA(szHost)-2 Do begin if Buffer[I + dwLen] = 0 then Break; If AnsiChar(Buffer[I + dwLen]) = '.' Then begin Buffer[I - 1] := dwLen; Inc(I, dwLen + 1); dwLen := 0; end Else begin Inc(dwLen); end; end; Buffer[I - 1] := dwLen; dnsqer := PDNS_QER(@Buffer[SizeOf(DNS_HDR) + 3 + lstrlenA(szHost) - 1]); dnsqer^.utype := htons(1); dnsqer^.classes := htons(1); sendto(nSocket, Buffer, SizeOf(DNS_HDR) + SizeOf(DNS_QER) + lstrlenA(szHost) + 2, 0, SerAddr, SizeOf(TSockAddrIn)); I := SizeOf(TSockAddrIn); ZeroMemory(@Buffer, BUF_SIZE); nRet := recvfrom(nSocket, Buffer, BUF_SIZE, 0, SerAddr, I); if dnshdr.numa = 0 then //这里=0是不存在的域名 begin Result := Nil; Goto OnExit; End Else begin dwLen := 0; szDump := @Buffer[nRet - 1]; I := PByte(@szDump[-4])^; while I = 4 do begin Dec(PByte(szDump), 16); I := PByte(@szDump[-4])^; Inc(dwLen); end; bMuch := dwLen > 1; Result := GetMemory(20 * dwLen); ZeroMemory(Result, 20 * dwLen); Inc(PByte(szDump), 12); while Ord(szDump[0]) = 4 do begin Inc(PByte(szDump)); FormatA(@szDebug, '%d.%d.%d.%d ', Ord(szDump[0]), Ord(szDump[1]), Ord(szDump[2]), Ord(szDump[3])); lstrcatA(Result, @szDebug); Inc(PByte(szDump), 4); Inc(PByte(szDump), 11); end; end; OnExit : closesocket(nSocket); end;
安卓乱动build.prop无法进系统解决
果然是No zuo No die啊
刚才手贱把配置信息改坏了
还好有备份备份覆盖之后重启发现开机动画结束后进不去系统..
于是USB连上然后
打开CMD
执行
adb devices
如果返回
List of devices attached 你的手机硬件码 device
就表示你的手机已经连接可以继续了
然后执行 su 进入root权限
cd /system 进入 system目录
chown root.root build.prop 修改build.prop文件所有者为root
chmod 644 build.prop 修改<span>build.prop文件权限到 rw-r-r</span>
然后ls -l 确定文件权限是否为rw-r-r保险起见不过一般不会有问题
最后直接reboot重启之
收工
Delphi XE6 Android 小试牛刀{发短信,打电话}
单元引用
uses Androidapi.Helpers, Androidapi.JNI.Telephony, FMX.PhoneDialer;
Function SendSMS(szTel, szText:string):Boolean; Var//发送短信 lpSend :JSmsManager; begin lpSend := TJSmsManager.Create; lpSend.sendTextMessage(StringToJString(szTel), Nil, StringToJString(szText), Nil, Nil); Result := True; end; Function CallTel(szTel:string):Boolean; Var//拨打电话 lpPhone :IFMXPhoneDialerService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(lpPhone)) then begin lpPhone.Call(szTel); end; Result := True; end;