Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
David Jančík [sczdavos]:

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

Nahoru Odpovědět 14.10.2012 17:10
Čím více času dostaneš, tím méně ho máš.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Theodor Johnson:
            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
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

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
Redaktor
Avatar
Theodor Johnson:

díky, nenapadlo mě to

Nahoru Odpovědět 14.10.2012 17:34
Přecházím na "Cross-Platform Development"
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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

Nahoru Odpovědět 14.10.2012 17:52
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

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
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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  +1 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
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
Theodor Johnson:

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

Nahoru Odpovědět 14.10.2012 21:08
Přecházím na "Cross-Platform Development"
Avatar
matesax
Redaktor
Avatar
Odpovídá na Theodor Johnson
matesax:

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

 
Nahoru Odpovědět 14.10.2012 21:11
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na matesax
Theodor Johnson:

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

Nahoru Odpovědět 14.10.2012 21:13
Přecházím na "Cross-Platform Development"
Avatar
Kit
Redaktor
Avatar
Odpovídá na Theodor Johnson
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:

Ř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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
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.