-
Fototrend
Új hozzászólás Aktív témák
-
dabadab
titán
válasz
ReSeTer #16598 üzenetére
Igazából ilyen feladatoknál szerintem érdemes körbenézni, hogy van-e valami létező program, amit lehet használni erre a célra, ahelyett, hogy te magad írnál valamit.
Amúgy meg ha tényleg kicsi meg tényleg meg kell írni, akkor inkább Pythont néznék, az tök jó ilyesmire.
-
opr
nagyúr
válasz
ReSeTer #16598 üzenetére
"többnyire CAD és egyéb program egymással való kommunikáció kiépítése céljából"
Ha itt konkrétan pluginról van szó, akkor meg kell nézni, hogy a konkrét programoknál ez hogy működik, milyen nyelv támogatott, és azt."üzemnek rajz leadása rajta keresztül, mindig tudják, hogy melyik a legfrissebb, le tudják tölteni stb..., termék státuszkövetés"
Erre lehet azt mondanám, hogy Python. Ennyit bőven simán tud, egyszerű, platformfüggetlen... Mi kell még? -
ReSeTer
senior tag
Helló!
Melyik nyelvet érdemes választanom, ha ipari cégnél szeretnék kisebb programot írni, többnyire CAD és egyéb program egymással való kommunikáció kiépítése céljából, vagy egyszerűbb munkafolymatot segítő programot (üzemnek rajz leadása rajta keresztül, mindig tudják, hogy melyik a legfrissebb, le tudják tölteni stb..., termék státuszkövetés)
Én C#-re gondoltam, C++ semmiképp, nem akarok olyan szinten belemászni.
Esetleg valami más, ami működhet könnyedén Windowsos környezetben? -
pmonitor
aktív tag
válasz
pmonitor #16585 üzenetére
Az ittenke lévő kódom már tudja a bináris, oktális, és a hexadecimális számrendszer kiírását is. Ugyanakkor még így is jóval gyorsabb, mint az itoa(...)
Hát hiába, az ASM nem hazudik! Főleg, ha egy olyan tud hatékonyabb kódot írni az enyémnél, aki keni-vágja a témát. Mert nekem össze kellett szednem magam, hogy ezt kiizzadjam magamból.
-
Ispy
nagyúr
Esetleg ha valaki hasznáná a built in sql tools (compare) az új vs-be kiváncsi lennék rá, mert a 2019-ben elég lepra a sebessége sajnos, pedig jó vóna.
-
-
fatal`
titán
válasz
Marky18 #16588 üzenetére
"sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat."
Az nem probléma, azért van (mármint a RAM).Viszont ismerősöktől azt hallom, hogy még elég bugos.
"Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al."
Én az a ritka faj vagyok, aki nem nagyon generál kódot, valószínű, mert rohadt gyorsan gépelek így nem zavar.Sokszor hülyeségeket ajánl, bár lehet, hogy mostanra már jobb a helyzet.
Lassan legalább itthon fel kéne tennem a 22-est megnézni. Bár itt meg nincs méretes projekt.
-
Marky18
aktív tag
válasz
fatal` #16574 üzenetére
Sokkal gyorsabb a 22-es. Most fejlesztettem egy kozepes meretu solutionbol allo .NET Core appot es volt idom parhuzamosan probalgatni a 19-es es a 22-es VS-t. Minden teren (startup, build, debug) sokkal gyorsabb az uj, igaz most mar be is foglalja a memoriat. De legalabb gyors
Az intelligens kodkiegeszites pedig baromi jo, rengeteg boilerplatet meg lehet iratni egy tab-al. -
pmonitor
aktív tag
A ciklus módosításával:
for (i = 0; i < 1000000000; i++)
{
//sprintf(str, "%d", -2138);
itoa(-2138, str, 10);
//printf(str);
}Itt egy 0-t tettem a végére, úgyhogy azt a másik ciklusba is oda kell tenni. Így az itoa() kb. 22 sec., az int_ToString() kb. 14 sec. alatt fut le. Ez már lényegesen jobb, de azért egyértelműen gyorsabb ennél is az asm.
@dabadab:
>mondjuk lehet, hogy azért így is megverné ezt az assembly kódotNem haragszom meg, ha csinálsz jobb asm kódot.
-
dabadab
titán
válasz
pmonitor #16575 üzenetére
Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített.
Mert nem ugyanazt csinálták: az sprintf() egy elég nagy tudású, rugalmas függvény, a te assembly kódod meg csak 32 bites inteket tud kiírni mindenféle formázás nélkül. Nyilván ha ugyanezt megírod C-ben, az is gyorsabb lesz, mint az sprintf, vagy ha az sprintf()-et megírod assemblyben, az meg minden bizonnyal lassabb lesz, mint az, ami a gyári stdlibben van (az alapján, hogy a mostani assembly kódod is elég szuboptimális).
Sőt, itt van C-ben egy még gyorsabb megoldás, ami a te assembly kódoddal ellentétben még csak nem is bugos
int int_ToString(int num, char* dest) {
memcpy(dest, "-2138\n", 7);
} -
pmonitor
aktív tag
válasz
Silεncε #16576 üzenetére
Idézet Innen:
Nem azt mondom, hogy lehetetlen gyorsabb assembly kódot írni, mint amit egy C fordító gyárt, csak azt, hogy nagyon nehéz, és az is csak valamivel lesz gyorsabb, de messze nem a "min. 15 éves gépeken is pont úgy menne egy mai/2021-es játék, mint a mai erőműveken" kategória lesz.
-
pmonitor
aktív tag
válasz
Fire/SOUL/CD #16427 üzenetére
Még azt mondják, hogy nem lehet assemblyvel gyorsabb kódot írni! Az olyanoknak ajánlom ezt a példakódot a figyelmébe:
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/timeb.h>
int int_ToString(int num, char* dest);
char str[12];
long timediff(struct timeb* start, struct timeb* end)
{
long seconds;
seconds = (long)(end->time - start->time);
start->millitm = end->millitm - start->millitm;
if (0 > start->millitm) {
start->millitm += 1000;
seconds--;
}
return seconds;
}
int main(void)
{
struct timeb start, end;
long seconds, seconds_1;
int militm, militm_1;
int i;
ftime(&start);
for (i = 0; i < 100000000; i++)
{
sprintf(str, "%d", -2138);
//printf(str);
}
ftime(&end);
seconds = timediff(&start, &end);
militm = start.millitm;
ftime(&start);
for (i = 0; i < 100000000; i++)
{
int_ToString(-2138, str);
//printf(str);
}
ftime(&end);
seconds_1 = timediff(&start, &end);
militm_1 = start.millitm;
printf("Eltelt ido(sprintf()): %ld.%03d masodperc\n", seconds, militm);
printf("Eltelt ido(assembly): %ld.%03d masodperc\n", seconds_1, militm_1);
}
int int_ToString(int num, char* dest)
{
__asm
{
mov edi, dest
mov eax, num
xor edx, edx
cmp eax, edx
jge nemnegativ
mov ecx, -1
imul ecx
push eax
mov eax, '-'
stosb
pop eax
nemnegativ :
xor ebx, ebx
push_chars :
xor edx, edx
mov ecx, 10
div ecx
add edx, 0x30
push edx
inc ebx
test eax, eax
jnz push_chars
pop_chars :
pop eax
stosb
dec ebx
cmp ebx, 0
jg pop_chars
mov eax, 0x0a
stosb
}
}Nálam itt az sprintf(...) stabilan 6 sec felett, az assembly kód stabilan 2 sec. alatt teljesített. Csupán kevesebb, mint az egyharmada alatt fut le az ASM kód.
-
fatal`
titán
válasz
martonx #16573 üzenetére
Ja hát a microservice persze, hogy gyorsan buildel. Nyiss meg egy régi solution 150 projekttel aztán meglátjuk mennyire gyors.
Mondjuk általában a ram korlát és a rengeteg process a probléma, vélhetően ez a 22-es vs-sel megoldódik (még nem próbáltam). Meg aztán a R# is sokat lassít, bár azt nyilván nem használja mindenki.
-
martonx
veterán
válasz
pmonitor #16566 üzenetére
Viszonyításképpen nekem Ryzen 7 5800x-en, 1 TB-s X4 m.2-es SSD-n, úgy indul a VS, mint az álom. Hol lassú ez? Szvsz iszonyat gyors. És a build idők is röhejesen alacsonyak. Igaz töbnyire Microservice-ekkel, meg Web API-kkal foglalkozok.
Ja, és a telepítés kevesebb, mint 7 GB-t foglal. -
dabadab
titán
válasz
pmonitor #16566 üzenetére
Gondolom azért, mert kevés komponenst telepítettél.
Igen, mert nem fejlesztek egyszerre harminc nyelven - ahogy egyébként kb. senki sem.
Amúgy meg azt a 4 GB teljesen érdektelen, maga a forráskód, amivel dolgozok, szintén akkora, ha meg még le is fordítom, akkor meg 60 GB.#16568 Ispy:
Én is csak azért tudom, mert most direkt megnéztem -
pmonitor
aktív tag
>A fejlesztőeszköz munkaeszköz
Mondjuk ezért nem értem pontosan, hogy ez miért off téma?>Az a fejlesztő, aki HDD-re telepíti a
Ez elírás volt. Bocsi. De a disk I/O így is a szűk keresztmetszet a RAM-al szemben.
Az én vasam egyébként 2019-ben volt a felső kategória alsó határán(nem mintha ez valamit is jelentene). De sosem voltam híve az erőforrás pazarlásnak. Talán ezért zavar engem ennyire.@Ispy #16568: nekem 250 giga partíció van a rendszernek, és ennek kb. a 35%-át használom.
-
dqdb
nagyúr
válasz
pmonitor #16566 üzenetére
A fejlesztőeszköz munkaeszköz, így annyi helyet foglal, amennyit. A VS helyfoglalása amúgy is elveszik az X darab használt middleware, konténer, temp fájlok, checkoutolt Git repó között.
Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).
Az a fejlesztő, aki HDD-re telepíti a VS-t, nagyon utálja magát, és már 10 évvel ezelőtt is nagyon utálta magát. Szerintem relatíve sosem volt még ilyen olcsó egy átlagos fejlesztésre/virtualizálásra kiválóan alkalmas gépet összeállítani az olcsó SSD és sokmagos processzorok korában. -
pmonitor
aktív tag
válasz
fatal` #16564 üzenetére
A mobilos példád igaz. De egy mobilba is soknak tartom az app-ok helyfoglalását. Éppen nemrég kérdezte tőlem egy idős néni, hogy az akcióban pár ezerért kapható 8 gigás tárhellyel rendelkező okostelót érdemes-e megvennie, mert Ő csak arra szeretné használni, hogy a tesco-ban az akciókat megnézze rajt. Mondtam Neki, hogy az sztem. nagyon kevés tárhely, mert az alkalmazások túl nagy helyet foglalnak.
De olyan aspektusa is van a dolognak, hogy hiába lett gyorsabb a HW, azért még mindig az a legszűkebb keresztmetszet. Így viszont hiába van 1 terrás HDD, azt mégsem lehet csak a VS-nek elfoglalnia. Méghozzá azért, mert így is egy közepes erősségű vason is nagyon lassan indul(főleg, ha töredezett a meghajtó).@dabadab: Gondolom azért, mert kevés komponenst telepítettél. Azért írtam, hogy alsóhangon 5-6 giga. 1-2 gigát tévedtem.
-
fatal`
titán
A programok is nagyságrenddel bonyolultabbak lettek. Nem rémlik, hogy 20 éve 8 giga rammal ellátott mobiltelefonokat kellett volna emulálni pl., vagy éppen konténerizálni. Ez is csak töredéke az azóta született igényeknek.
Biztos meg lehetne csinálni, hogy kevesebb erőforrást igényeljen az IDE (a jelenlegi funkcionalitással), a nagyobb kérdés, hogy ki fizetné ki ezért a felárat? Némi tárhely több nagyságrenddel olcsóbb, mint a munkabér és ez így is van rendjén.
-
zsolti_20
senior tag
válasz
disy68 #16554 üzenetére
Köszönöm a tippeket sztanozs és disy68. Sikerült kideríteni, hogy a kód az egér X és Y koordinátáját kéri le, majd ez alapján dönti el, hogy melyik tickbox .gif-et kell oda tennie.
Ez a megoldás működhet java scriptből, mert letudom kérni az egér X és Y koordinátáját, a probléma már csak az, ha legörgetek a weblapon akkor a tickbox X Y koordinátája és máshol fog elhelyezkedni.
Így ha megadok neki egy egér kattolás nem a megfelelő helyen fog megtörténni.<html>
<body>
<script>
onmousemove = function(e){
console.log("mouse location:", e.clientX, e.clientY);
var pos = e;
var dot;
dot = document.createElement('div');
dot.className = "dot";
dot.style.left = pos.x + "px";
dot.style.top = pos.y + "px";
document.body.appendChild(dot);
}
</script>
</body>
</html> -
pmonitor
aktív tag
válasz
pmonitor #16458 üzenetére
A FindFileC.exe programot frissítettem, valamint a forrása is megtalálható a .rar fájlban. A forráson még bőven lenne mit csiszolni, de működőképes. Ha valaki működést érintő bug-ot talál benne, akkor megköszönném, ha jelezné. Tényleg jó lenne, ha lenne egy ilyen win32-es topik, ami csak ilyenekkel foglalkozna. De ahhoz az kellene, hogy lenne több olyan, aki keni-vágja ezt a témát. Még az is lehet, hogy én is kérdeznék
Pl. hogy miért nem működik az sprintf(...) win32-ben? "Error LNK2001 unresolved external symbol __imp____stdio_common_vsprintf" hibaüzit ad. Mindenesetre suszter módszerrel megoldottam a helyettesítését a FindFileC-ben.
------------------------------------------------------------------------
Egy másik téma egy olyan témakörből, ami lehet, hogy többször előjön nálam, mert engem eléggé irritál a(z) (erőforrás)pazarlás. Szóval a régi szép időben az IDE megvolt pár megából. Most a VS alsóhangon is 5-6 giga, de inkább 10-nél kezdődik(régebben egy egész winchi volt 2 giga körül!). Hová jutunk, ha ez a "fejlődés" így megy tovább? Az oké, hogy a VS többet tud, de azért mégis...
-
disy68
aktív tag
válasz
zsolti_20 #16552 üzenetére
van bizonyára az elemen vagy valamelyik szülőjén egy eseménykezelő, ami feltételezhetően egy click hatására csinál valamit (sanszosan többről van szó, mint a képcsere)
böngésző dev-tools inspectnél meg lehet nézni, hogy min van milyen eseménykezelő (firefox-é sztem átláthatóbb e téren)
mondjuk az is lehet, hogy hiába találod meg ezt, ettől függetlenül nem biztos, hogy az értlemezése/használata triviális lesz
-
zsolti_20
senior tag
Sziasztok! Az előző alkalommal is nagyon segítőkészek voltatok, tökéletesen működik amit elterveztem.
Sajnos van egy rész aminél elakadtam. Ez egy régebbi dolog már, de felbuzdulva a tegnapi dolgon, úgy gondoltam megkérdezlek titeket, hátha láttatok már hasonlót.
Szeretnék egy tickbox tickelni javascripttel, de úgy néz ki, hogy ennek a boxnak nincs azonosítója.
Annyit látok csak amikor megnézem mi van mögötte:Amikor tickelve van:
<td width="16px">
<img src="folder/folder/folder/folder/iconCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
</td>
Amikor nicns tickelve:
<td width="16px">
<img src="folder/folder/folder/folder/iconUnCheckAll.gif" align="absmiddle" style="width: 16px; height: 16px;">
</td>
Ha csak simán a .gif nevét írom át, betickeli,
de úgy veszi mintha semmi sem történt volna.
Még soha nem találkoztam ilyesmivel, ID hiányában hivatkozni sem lehetséges rá.
Valaki még régen azt mondta nekem, hogy ez egy DHTMLX. Nem tudom ez mennyit segít
a jelenlegi helyzetben. -
dqdb
nagyúr
-
pmonitor
aktív tag
válasz
pmonitor #16549 üzenetére
Ezt nagyon benéztem. Egy következtetésem volt jó: Ki érti ezt'et?
Mert az igaz, hogy gyakorlatilag ahány alkalmazás, annyiféle eredmény. De a részletekbe belebonyolódtam.
1.: C#-ban find(first/next)file-t használva.
2: C-ben find(first/next)file-t használva.
3.: TC-benHa a C:\windows\system32-t listázom ki, akkor a 2. esetben az "aadcloudap.dll"-t nem találja meg. Az 1. és a 3. esetben megtalálja.
Viszont ha ugyanezt a mappát almappákkal listázom ki, akkor az 1. és a 3. eset is eltérő eredményt ad(a TC több mappát/file-t talál a C#-nál).
De a különbségek nálam csak a c: rendszermeghajtón jönnek ki. Pl. a D:\ meghajtó teljes listázásánál mindegyik ugyanazt az eredményt adja(persze a D: meghajtón nincsenek "különleges attribútumú" mappák/állományok.)
A különleges attribútumú mappák/állományok listázása esetén talán a TC találja meg a legtöbbet. Utána a C#, majd a végén a C.Szóval az összevisszaság megvan. De azért az előző hsz-emben lévő hamis kijelentésemért elnézést kérek.
-
pmonitor
aktív tag
Egy érdekesség.
Állomány listázásáról van szó. Azon belül is 3 esetről:1.: C-ben(VS-ben), ha a következő beállítást használom:
Project jobb klikk -> Properties -> Configuration Properties -> Advanced -> Character Set
Itt "Use Unicode Character Set" beállítás mellett FindFirstFileW-t használva.
2.: C-ben(VS-ben) az előző helyen "Not Set" beállítás mellett FindFirstFileA-t használva
3.: TC-ben.Ezek közül mindegyik állomány listázásnak más az eredménye. Ja, és a parancssor dir parancsáról nem is beszéltem.
Pl. ha C:\windows\system32-t listázom ki, akkor a 2. esetben az "aadcloudap.dll"-t nem találja meg. Az 1. és a 3. esetben megtalálja, de van amiben azok is különböznek.
Ki érti ezt'et? -
zsolti_20
senior tag
válasz
disy68 #16542 üzenetére
A kód maga már készen van. Mivel nem én vagyok az oldal fejlesztője így nem tudom ezt a kódot a HTML-be integrálni. Én csak mint sima felhasználó létezek.
A cél az lenne, hogy megtaláljam a lehető legegyszerűbb módot arra, hogy eljuttassam a a JavaScript parancsokat a weboldalra.
Pl. a google.com weboldalon szeretném beírni a keresőbe hogy TEST. Erre megnyitom a consolet, bemásolom a JavaScript kódot ami automatikusan kitöltő a kereső mezőt a "TEST" szöveggel.
Ehhez szükséges nyomnom egy F12-öt majd a consoleba bedobnom a kódot. Ha pl a munkatársam szeretné ezt használni, nem lenne képes rá, mivel a programozói tudása 0 körül van.
Ezért nézelődök mindenfelé hátha létezik egyszerűbb megoldás is erre. -
-
dabadab
titán
válasz
zsolti_20 #16539 üzenetére
Igen, de ehhez a böngészőben telepíteni kell a Tampermonkeyt + a konkrét scriptet is.
Azt mondjuk nem látom, hogy ez miért segítene neked, hiszen ez kliensoldali script, ez nem fogja látni azt az Excel file-t, ami nálad van.A konkrét weboldalhoz mennyire férsz hozzá? Konkrétan át tudod írni a html-t vagy csak vmi indirekt módon?
-
zsolti_20
senior tag
Sziasztok! Egy másik topikból lettem ide irányítva, remélem már jó helyen vagyok.
Annyit kell tudni az egészről, hogy egy excel fileból viszek be adatokat egy weboldalra, ahol sajnos nincs lehetőség az oldal fejlesztésére. Így marad a manuális lassú megoldás ami akár több órát is igénybe vehet, vagy bedobok egy kódot Google Chrome weboldalra és automatikusan csinálja amit szeretnék.
Milyen lehetőségeim vannak futtatni JavaScriptet?
Arra gondolok, hogy a HTML-be lehet építeni
<script> és </script> közé, aztán szépen lefut amikor betöltődik az oldal, vagy épp ha egy gombhoz rendelem hozzá. De sajnos ez az opció most nem játszik nálam.
Tudok futtatni JavaScript-et Google Chrome console-ból, ami nagyon jól működik, csak nem annyira felhasználó barát.
Van bármi más lehetőség arra, hogy egy weboldalt "irányítsak" JavaScript-el? Esetleg léteznek erre külsős programok, vagy egy HTML manipulátor applikáció?
A Google Chrome console-ból is elvagyok vele, csak jobb lenne egy kicsit felhasználóbarátabb opciót találni. -
lenkei83
tag
Szép kis vitát robbantottam ki.
Bocs srácok.Más: My.Settings.Save() után, hogyan tudom újra betölteni a configot anélkül, hogy újra kellene indítani a programot? Sehogyan sem tudom megoldani.
Pórbáltam így, de nem működött.System.Configuration.ConfigurationManager.RefreshSection("appSettings")
Application.Restartrészben megdoldás lehet, de Runtime megoldást keresek.
-
pmonitor
aktív tag
válasz
sztanozs #16528 üzenetére
Készítettem tesztprogramot C-ben, csak nem tudom, hogy mikor tudom hosszasan futtatni. pidtesztA:
#include <windows.h>
HINSTANCE hInstance = NULL;
char* AppName = "PID teszt \"A\"";
char* WindowClassName = "pidtesztA";
HWND AppHwnd = NULL;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int main()
{
WNDCLASSEX wc;
MSG msg;
hInstance = GetModuleHandle(NULL);
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.hbrBackground = COLOR_BTNFACE + 1;
wc.hInstance = hInstance;
wc.lpszMenuName = NULL;
wc.lpszClassName = WindowClassName;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(0, IDC_ARROW);
RegisterClassEx(&wc);
AppHwnd = CreateWindowEx(0, WindowClassName, AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 1200, 900, 0, 0, hInstance, 0);
ShowWindow(AppHwnd, SW_SHOWDEFAULT);
UpdateWindow(AppHwnd);
while (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
ShowWindow(AppHwnd, SW_NORMAL);
break;
case WM_COMMAND:
break;
case WM_SIZE:
{
break;
}
case WM_SHOWWINDOW:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
break;
}
}pidtesztB:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
STARTUPINFOA SI;
PROCESS_INFORMATION PI;
HWND Pids[400000000];
int PidsP = 0;
int waitmsec = 500;
int appStart(char name[])
{
if (!CreateProcessA(NULL, name, NULL, NULL, FALSE, 0, NULL, NULL, &SI, &PI))
{
printf("A %s file-t nem lehet megnyitni...\n", name);
return -1;
}
WaitForSingleObject(PI.hProcess, waitmsec);
return 0;
}
int main(int argc, char* argv[])
{
DWORD procid = 0, hwndid;
ZeroMemory(&SI, sizeof(SI));
SI.cb = sizeof(SI);
ZeroMemory(&PI, sizeof(PI));
if (argc == 3) waitmsec = atoi(argv[2]);
char appA[50] = "pidtesztA.exe";
char appAClass[50] = "pidtesztA";
if (!appStart(appA))
{
HWND hwnd = FindWindowExA(NULL, NULL, appAClass, NULL);
while (hwnd)
{
int pidact = 0;
int tid = GetWindowThreadProcessId(hwnd, &pidact);
Pids[PidsP] = pidact;
PidsP++;
hwnd = FindWindowExA(NULL, hwnd, appAClass, NULL);
}
TerminateProcess(PI.hProcess, 0);
}
HWND prochwnd;
int i, out = 0, imax = 500;
if (argc >= 2) imax = atoi(argv[1]);
for (i = 0; i < imax; i++)
{
ZeroMemory(&SI, sizeof(SI));
SI.cb = sizeof(SI);
ZeroMemory(&PI, sizeof(PI));
if (!appStart(appA))
{
HWND hwnd = FindWindowExA(NULL, NULL, appAClass, NULL);
while (hwnd)
{
int pidact = 0;
int tid = GetWindowThreadProcessId(hwnd, &pidact);
int j = 0;
while (j < PidsP)
{
if (Pids[j] == pidact)
{
printf("Pid egyezik!\n");
out = 1;
break;
}
j++;
}
if (out) break;
Pids[PidsP] = pidact;
PidsP++;
hwnd = FindWindowExA(NULL, hwnd, appAClass, NULL);
}
TerminateProcess(PI.hProcess, 0);
if (out) break;
}
}
printf("i: %d\n", i);
return 0;
}Mint látható az "A" egy standard window. A "B" console. Az indítási intervallum, és a waitforsingleobject() ideje is alapból 500, de parancssorból változtatható, mint az a kódból is látható. A szám adatok validitását nem ellenőriztem le, csak egyből konvertál(legalábbis megpróbál
).
Még nem tudtam hosszan futtatni. Ha vki. működésbeli hibát vesz észre, Ő kérem jelezze. -
troll81
addikt
Sziasztok van olyan ph oldal ahol ecu programokkal foglalkozik valami illetve ori bin fajlokkal?
Elakadtam egy ecu ban abban kérnek segítséget. -
-
sztanozs
veterán
válasz
pmonitor #16505 üzenetére
Futtattam pénteken egy tesztet: ~300K process indításból csak kb 3000 egyedi PID volt. HWND egyezést csak egyet sikerült előidéznem, azt közvetlenül a gép újraindítása után.
C# (form) kód:using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace pidtest {
public partial class Form1 : Form {
[DllImport("user32.dll", SetLastError = true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
try {
uint pid;
IntPtr hwnd = Handle;
GetWindowThreadProcessId(Handle, out pid);
using (StreamWriter w = File.AppendText(@"c:\temp\pidtest.txt")) {
w.WriteLine("{0} {1}", pid.ToString(), hwnd.ToString());
} }
finally { Close(); }
}
}
}
python teszter:import os
a=0
f=open("c:/temp/pidtest.txt","r");A=f.readlines()
while 1:
os.startfile("c:/temp/pidtest.exe")
A+=f.readlines()
if len(A) != len({*A}): break
if a%100==0:
B,C=zip(*[a.split()for a in A])
D,E={*B},{*C}
print(f'Items: {len(B)} - Unique: {len(D)} PID, {len(E)} HWND', end='\r', flush=1)
a+=1
f.close() -
pmonitor
aktív tag
Jó. Ha így állsz hozzá...
Ettől függetlenül, ha lesz időm, írok egy ilyen programot, amit max. 1-2 napig futtatok, mert én tényleg kíváncsi vagyok rá(fogadástól függetlenül). Az biztos, hogy a programkódot közzéteszem majd, és beszámolok az eredményről(mondjuk ez biztos nem holnap lesz).
-
válasz
pmonitor #16524 üzenetére
> Szóval, ha vesztenék(rossz esetben), akkor mit gondolnának rólam a többiek?
Hat az, hogy a forumon rosszat gondol rolat par ember (aki mar igy is hulyenek nez), az egesz mas, mint kifizetni 10 milliot
> Ha ügyvéd biztosít, hogy megkapod a lóvét, akkor mire írod, hogy komolytalan?
Az ugyved az nem biztosit semmirol, csak arrol, hogy a szerzodes ervenyes. Utana ha nem adod oda, akkor eleg maceras megszerezni, sok-sok-sok evbe telik, annal azert dragabb az idom.
Tehat gyerunk, majd szolj, ha megvan.
-
pmonitor
aktív tag
>Ilyen nincs, ez komolytalan. Szedd elo, es mehet. ....... mert anelkul mi lesz? Polgari per?
Ha ügyvéd biztosít, hogy megkapod a lóvét, akkor mire írod, hogy komolytalan? Meg aztán... itt a fórumon is itt van/lesz a nyoma, hogy bevállaltuk. Szóval, ha vesztenék(rossz esetben), akkor mit gondolnának rólam a többiek? És az olvasók? Szóval azért az nem csak úgy megy, hogy polgári per lesz belőle...
Viszont azok tények, amit leírtam. Az is tény, hogy a dqdb-vel történő irományunk sec-ekről/min-ekről szólt. És az is tény, hogy egy évet emlegetsz, mert meg akarod nyerni. Ebből látszik, hogy mennyire távol áll a valóságtól, amit dqdb írt.
Összesítve: a 10M nélkülözhető lóvé nincs meg, de garancia, hogy megkapod, ha nyersz, az ügyvéd(és a fórum résztvevői által) meglesz.
-
válasz
pmonitor #16520 üzenetére
> A 10M-t nem tudom letétbe helyezni, de biztosítékot tudok rá adni(a vagyonom több, csak a vesztésem esetén kell egy kis idő, hogy meg tudjam adni, de nincs vele gond).
Ilyen nincs, ez komolytalan. Szedd elo, es mehet. Escrow nelkul lenyegeben lehetetlen normalisan fogadni, mert anelkul mi lesz? Polgari per? Ne vicceljunk mar.
> De azt is bele számoltad, hogy a több megnyitással a számítási idő is növekszik(tehát amíg ellenőrzöd az ütközést)?
Persze.
> Ezzel szemben mégis egy éves futásidőt emlegetsz.
Mivel garantaltan meg akarom nyerni, emiatt persze. De mostmar arrol beszelunk, hogy garantaltan nyerjek, te meg onnan kezdted, hogy garantaltan te nyersz
Na jo, szoljal amikor megvan a 10M nelkulozheto penz, ha tuti nyersz, akkor nem lehet gond ennyit kolcsonkerni valakitol.
-
pmonitor
aktív tag
Nem tudom, hogy a fogadásból lesz-e valami, de valami egyértelműen látszik: mégpedig az, hogy milyen kicsi a valószínűsége a "jó eset" bekövetkezésének. Te is írtad, hogy "Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest". Ezzel szemben mégis egy éves futásidőt emlegetsz. Na erre mondtam én, hogy lehetetlen. Mert az eredeti példánkban(amiről dqdb-vel írogattunk) pár sec/min alatt kellene bekövetkeznie ennek az esetnek "véletlenül". De látod, amikor tétje van a dolognak, akkor már hónapokról/évről beszélgetünk. Mondjuk én is kockáztatok, mert csak 1 window-t kell ellenőrizni a "B" programnak. Szóval azért arra is van esély, hogy év alatt talán beletrafál egy ütközésbe. Ki tudja ezt?
-
pmonitor
aktív tag
A 10M-t nem tudom letétbe helyezni, de biztosítékot tudok rá adni(a vagyonom több, csak a vesztésem esetén kell egy kis idő, hogy meg tudjam adni, de nincs vele gond).
>Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest.
De azt is bele számoltad, hogy a több megnyitással a számítási idő is növekszik(tehát amíg ellenőrzöd az ütközést)?
-
pmonitor
aktív tag
Ügyvéd előtt is beleállok. Már csak a "bizonyíthaóan"-ban kell megegyeznünk a részemről(meg valszeg a "B" program max. futásidejéről(bár ezt meghatározhatjuk úgy is, hogy "mi döntjük el, hogy mikor állítjuk le"). De ezek már csak részletkérdések.
Egyébként sztem a PID is 32 bites.
-
válasz
pmonitor #16516 üzenetére
Okes. Tenyleg komolyan gondolod ezt a 10M-t, akar ugyved elott is beleallsz? Csak mondom, hogy 1) a Windows ujrahasznalja a PID-eket 2) a HWND 32 bites. Ha 1 masodpercenkent tudok nyitni/zarni egy ablakot, akkot 50% eselyem van ra, hogy masfel nap alatt talalok utkozest.
-
-
válasz
pmonitor #16509 üzenetére
Egyszerusitsuk, legyen egy tipusu alkalmazas, mondjuk csak Notepad. Semmi mas. Es legyen az, hogy nem csak az elsohoz hasonlitsuk, hanem barmelyikhez a listaban, hiszen ahonnan a beszelgetes indult, ott ez is problemat okozna.
Tehat:
do
- nyitok egy notepad.exe-t
- feljegyzem a pid-et es a hwnd-t
- bezarom
while (nincs ismetlodo pid+hwnd paros a listaban)
Ez igy oke? -
dabadab
titán
válasz
don_peter #16500 üzenetére
Hogy oldják meg azt, hogy mondjuk egy adatbázis kapcsolati adatok ne kerüljenek ki?
Úgy, hogy az a szerveren van
Az ilyen webes cuccoknál a frontend-backend architektúra a normális, a szerveren fut a backend, az kapcsolódik az adatbázishoz, csinálja az autentikációt meg a lényegi dolgokat, a kliensnél meg csak egy kis minimál rész van, ami a megjelenítést meg az inputot csinálja.
A kettőt meg tipikusan vmi REST API-val kötik össze.Ami a kliensnél van, arról nyugodtan feltételezheted, hogy ahhoz hozzá lehet férni, illetve arra is számítsál, hogy a klienstől érkező adatokba belepiszkáltak, szóval a backend rendes input validációt meg hasonlókat kell csinálni, mert különben úgy jársz, hogy a T Systems a BKV bérletekkel
-
pmonitor
aktív tag
>tehat elojon egy olyan [PID,HWND], ami mar szerepelt
Nem elég, hogy csak előjöjjenek ugyanazok, hanem hogy ugyanolyan típusú alkalmazás jöjjön létre ezekkel a jellemzőkkel. Tehát:
1.: nyitsz egy X típusú alkalmazást(ebben megegyezhetünk, hogy mi legyen ez. Lehet pl. egy notepad is.)
2.: Feljegyegyzed ennek az alkalmazásnak a PID-jét és az elsődleges window Handle-jét(notepad esetén pl. annak a windownak, aminek az "class" tulajdága "Notepad").
3.: Nyitsz/zársz alkalmazásokat(köztük X típusúakat is).
4.: Ha a nyitott alkalmazás X típusú(a példámban notepad), és a PID-je és az elsődleges window Handle-je ugyanaz, mint amit az elején feljegyeztél, akkor nyertél. -
válasz
pmonitor #16507 üzenetére
10M az kicsit alacsony erre a celra. Csak hogy jobban specifikaljuk:
- nyitok/zarok alkalmazasokat, minden egyes alkalommal feljegyzem a PID-et es a HWND-t. Ha talalok ismetlodest (tehat elojon egy olyan [PID,HWND], ami mar szerepelt), akkor nyertem, ha nem tudok ilyet, akkor vesztettem?
(ugye a HWND-nek csak az also 32 bitje a szignifikans, tehat azt kell lejegyezni)
-
pmonitor
aktív tag
Nekem még olyant sem sikerült előidéznem, hogy azonos PID legyen. Mondjuk nem is csodálkozom rajt, hiszen a feltétel szerint nem elég, hogy csak egyszerűen ugyanaz legyen a PID, hanem még az is, hogy annak is pontosan X típusú programnak/alkalmazásnak kell lennie. Úgyhogy sztem. már ehhez is nagy véletlen kell, hogy teljesüljön. És akkor még nem esett szó az elsődleges window Handle-jéről.
Lehet, hogy elég csak a PID rögzítése. Ha vki. biztosabbra akar menni, akkor az elsődleges window Handle-t is rögzítheti. Ha valakinek még ez sem elég, Ő a Window Thread rögzítésével aztán sztem. túlbiztosíthatja magát. De ehhez sztem. paranoias-nak kell lenni.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- ÚJ PS5 Slim - FW 8.40 - Lemezolvasó - Lua Loader - Lua játék - Lapse
- új, bontatlan, iPhone 16E gyárilag kártya-független, apple világgaranciával
- Üzletből, garanciával, Macbook Pro Retina 16" 2019, Gray i9 64GB RAM 1TB SSD Radeon Pro 5500M
- Üzletből, garanciával, Macbook Pro Retina 16" 2019, Gray i9 64GB RAM 2TB SSD Radeon Pro 5600M 8GB
- MacBook Pro 14" M1 MAX - 32GB / 1TB (2021) - 1 év garancia
- Új Apple iPhone 16 Pro Max 256GB, Kártyafüggetlen, 3 Év Garanciával
- AKCIÓ! ASUS MAXIMUS VIII HERO Z170 chipset alaplap garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- Samsung Galaxy Xcover 5 64GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Lenovo Legion Slim 5 Gamer notebook - R7 7435HS 16GB RAM 1TB SSD RTX 4070 8GB GDDR6 WIN11
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged