Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:14.10.2012 17:06

zdravim, můžete mi prosím někdo poradit proč se můj string nemaže příkazem =null; nebo =""; dřív mi to normálně fungovalo, ale najednou se nevymaže a příkaz místo aby se jednou provedl a string se vymazal, tak se provede a string se nevymaže, provede se znova(součást timeru)...

Odpovědět
14.10.2012 17:06
Mo8ilε 15 Ѐλđ
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Jančík:14.10.2012 17:10

Můžeš nám ukázat zdrojový kód?

Nahoru Odpovědět
14.10.2012 17:10
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na David Jančík
Theodor Johnson:14.10.2012 17:13
            string buffer = "";
            foreach (System.Int32 i in Enum.GetValues(typeof(Keys)))
            {
                if (GetAsyncKeyState(i) == -32767)
                {
                    buffer += Enum.GetName(typeof(Keys), i);
                }
            }

            keylog_text += buffer;
            keylog_text.ToUpper();

            if (keylog_text.Contains("BACK"))
            {
                keylog_text = "";
            }

            switch (keylog_text)
            {
                case "UMV":
                    Program.mainForm.Activate();
                    Program.mainForm.BringToFront();
                    keylog_text = "";
                    break;

                case "EXITUMV":
                    this.Close();
                    break;

                case "RUNPICTUREVIEWER":
                    OpenPictureViewer_button1_Click(sender, e);
                    keylog_text = "";
                    break;

                case "RUNVIDEOPLAYER":
                    OpenVideoPlayer_button2_Click(sender, e);
                    keylog_text = "";
                    break;

                case "RUNMUSICPLAYER":
                    OpenMusicPLayer_button3_Click(sender, e);
                    keylog_text = "";
                    break;

                case "OPENFOLDER":
                    OpenFolder(sender, e);
                    keylog_text = null;
                    break;
}

a právě string keylog_text se nevymaže ani při jedné ze splněných podmínek

Editováno 14.10.2012 17:14
Nahoru Odpovědět
14.10.2012 17:13
Mo8ilε 15 Ѐλđ
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Jančík:14.10.2012 17:19

keylog_text.ToUpper(); ti sice zvětší písmena v textu na velká, ale tu vzniklou hodnotu nikam nepřiřazuješ. To by mohl být ten problém, protože žádná s podmínek není splněna.

Nahoru Odpovědět
14.10.2012 17:19
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:14.10.2012 17:21

Vypadá to, že se podmínka nesplní nikdy. Co si myslíš, že dělá metoda ToUpper()? Ve tvé aplikaci nic.

Přepisovat obsah proměnné v aplikaci není dobrý nápad. Samozřejmě až na výjimky.

Nahoru Odpovědět
14.10.2012 17:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:14.10.2012 17:34

díky, nenapadlo mě to

Nahoru Odpovědět
14.10.2012 17:34
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:14.10.2012 17:46

Ve tvém případě se to dá vyřešit jednoduše třeba takto:

switch (keylog_text.ToUpper()) ...

Předpokládá to však přesunutí detekce "BACK" do toho switche.

BTW: je v C# možné vložit funkci do pole? Tady by se to hodilo, odpadl by switch. V Pythonu to jde.

Nahoru Odpovědět
14.10.2012 17:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:14.10.2012 17:52

Jde udělat pole delegátů nebo by to šlo přes reflexi.

Nahoru Odpovědět
14.10.2012 17:52
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.10.2012 18:11

Koukám, že v C# není nic jednoduché. V Pythonu je to přes obyčejné přiřazení.

Nahoru Odpovědět
14.10.2012 18:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:14.10.2012 18:17

Tak udělám si datový typ pro tu funkci (delegát podle parametrů co bere) a poté také jen přiřadím. Je to stejné, jen C# je staticky typovaný.

Editováno 14.10.2012 18:17
Nahoru Odpovědět
14.10.2012 18:17
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:14.10.2012 18:43

Mne zase nenapadl důvod, proč obsah proměnné keylog_text mažeš. Pokud v programu přepisuji hodnotu nějaké proměnné, musím k tomu mít pádný důvod.

Nahoru Odpovědět
14.10.2012 18:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.10.2012 18:57

Určitě to uvedu, až budu psát nějaký tutoriál Pythonu, ale až v pokročilejších lekcích.

Nahoru Odpovědět
14.10.2012 18:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:14.10.2012 19:35

tak jsem na to přišel, v té metodě open folder, byla funkce if (openFolderDi­alog.ShowDialog() == DialogResults.OK), a v tom byl ten problém, musel jsem jen řádek kdy se string anuluje přeunout nad tu metodu, jinak se mi zobrazovalo několik open folder dialogů, dokud jsem nějáký nepotvrdil, apk se teprve string anuloval

Nahoru Odpovědět
14.10.2012 19:35
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:14.10.2012 19:40

Cimrman by poradil: Zkus to bez anulování.

Nahoru Odpovědět
14.10.2012 19:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:14.10.2012 21:08

jenže to je v timeru(1ms), když ten string nevymažu, tak se zacyklí

Nahoru Odpovědět
14.10.2012 21:08
Mo8ilε 15 Ѐλđ
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Theodor Johnson
matesax:14.10.2012 21:11

Timer se snad dá ukončit - ne? :) (Cyklí se cyklus...)

 
Nahoru Odpovědět
14.10.2012 21:11
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na matesax
Theodor Johnson:14.10.2012 21:13

ale v tom kodu co jsem psal je duvod proc ho ukoncit nemohu, key log

Nahoru Odpovědět
14.10.2012 21:13
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:14.10.2012 21:21

Protože máš chybu v návrhu. Když to uděláš správně, tak se nezacyklí. Jestli jsem tvůj algoritmus pochopil správně, tak docela obskurním způsobem implementuješ tokenizer.

Nahoru Odpovědět
14.10.2012 21:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:14.10.2012 21:36

ted to nechapu zas ja, těch prvních 8 řádků se dá taky využít v keyloggeru http://www.youtube.com/watch?…

Nahoru Odpovědět
14.10.2012 21:36
Mo8ilε 15 Ѐλđ
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Hartinger:15.10.2012 15:42

Řešíš následek problému, ne příčinu. Něco děláš špatně, kdybys nám prozradil o co se snažíš, možná bychom ti i poradili, jak to udělat správně.

Nahoru Odpovědět
15.10.2012 15:42
You are the greatest project you will ever work on.
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:15.10.2012 15:48

Narazil jsem na problém, celý ten program je Ultimate media viewer (k nalezení na http://tankade.webnode.cz/ )
ale kvůli té funkci na zjišťování stavu kláves jsem zatím u jednoho případu zjistil blokování programu antivirem

Nahoru Odpovědět
15.10.2012 15:48
Mo8ilε 15 Ѐλđ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 21 zpráv z 21.