Ondreji proc by proboha .NET nebyla idealni platforma? Kluci co pisou boty v pythonu to delaji proto, ze zrejme neumi .NET..
Ja doporucuji .NET a http://docs.seleniumhq.org/
Ondreji proc by proboha .NET nebyla idealni platforma? Kluci co pisou boty v pythonu to delaji proto, ze zrejme neumi .NET..
Ja doporucuji .NET a http://docs.seleniumhq.org/
ok ok, ja v assembleru operacny systemy nepisu, takze zalejzam a soupu nohama..
jen posledni, lec dulezita vec pro nepravdepodobne ctenare tohoto vlakna: IL neni interpetovany jazyk, je prelozeny JITem do Tveho milovaneho strojoveho kodu ;)
kazdopadne preji hodne zdaru :)
A jeste k Tvemu poslednimu postu:
- unix neni realtime operacni system ani kdyby si sakra moc chtel
- xna neni jen o direct x, od ktereho jses stejne maximalne odstitnen. Jsou tam ale moc hezke navrhove vzory, ktere bych Ti doporucil alespon prozkoumat. Napriklad je tam reseno, ze hra bezi na kazdem pc stejne rychle (pokud neni xna znasilneno :)) ). Toho ty s Thread.Sleepem nemuzes dosahnout, protoze nikdo Ti nikdy nezaruci, ze vlakno pocka presne tu dobu, kterou chces, uz jen kvuli tomu, ze win maji 16ms timer .)
- CMD nema s .NET nic spolecneho, protoze, svete div se, .NET beha i na jinejch operacnich systemech, nez na winu a zadny CMD nemaji ;)
Neber to prosim tolik konfrontacne, ja Te nechci nasrat, jen poradit ;)
Proboha zlato, nac tolik vykricniku a otazniku :)
Zde Ti posilam kod, ktery prave pres ty ceckove knihovny dostane treba 5 klaves najednou a nepotrebujes zadny Thread.Sleep()
namespace Robot.Win.Interpop
{
/// <summary>
/// Codes representing keyboard keys.
/// </summary>
/// <remarks>
/// Key code documentation:
/// http://msdn.microsoft.com/…S.85%29.aspx
/// </remarks>
public enum KeyCode : int
{
Shift = 0x10,
Ctrl = 0x11,
/// <summary>
/// The left arrow key.
/// </summary>
Left = 0x25,
/// <summary>
/// The up arrow key.
/// </summary>
Up,
/// <summary>
/// The right arrow key.
/// </summary>
Right,
/// <summary>
/// The down arrow key.
/// </summary>
Down
}
/// <summary>
/// Provides keyboard access.
/// </summary>
public static class NativeKeyboard
{
/// <summary>
/// A positional bit flag indicating the part of a key state denoting
/// key pressed.
/// </summary>
private const int KeyPressed = 0x8000;
/// <summary>
/// Returns a value indicating if a given key is pressed.
/// </summary>
/// <param name="key">The key to check.</param>
/// <returns>
/// <c>true</c> if the key is pressed, otherwise <c>false</c>.
/// </returns>
public static bool IsKeyDown(KeyCode key)
{
return (GetKeyState((int)key) & KeyPressed) != 0;
}
/// <summary>
/// Gets the key state of a key.
/// </summary>
/// <param name="key">Virtuak-key code for key.</param>
/// <returns>The state of the key.</returns>
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern short GetKeyState(int key);
}
}
A proc proboha jednas tak urazene, ja bych Ti rad pomohl. Ty ale nejdriv napises, ze nechapes jak funguje rekurze, pak najednou pises o synchronizaci vlaken, aby jsme se nakonec dostali k tomu, ze pouzivas Thread.Sleep.
Ja proste tvrdim, ze Thread.Sleep nepotrebujes a ze je to spatny navrh. Bud trvej na svem, nebo si nech poradit ;)
Ale o vlaknech si nic nepsal. S cim presne mas tedy problem? Trosku lip to popis, ukaz kousek kodu, kterej Te zajima a muze Ti nekdo poradit.