
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╕ рдореМрд╕рдо рдореЗрдВ, рдЧреЛрд▓рд┐рдпреЛрдВ рдФрд░ рдардВрдбреА рджрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдЦрддреНрдо рдХрд░ рд▓рд┐рдпрд╛, рдореИрдВрдиреЗ рд╣рд╛рдмрд░рд╛ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛ рдФрд░ рдЕрдм рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдкрд╛рда рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдкрд╛рда рд╕реЗ рдХрд┐рд╕реА рднреА рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ
рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣, рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред C # рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ sql рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрди: рдиреЗрдХреНрд╕реНрдЯ рдиреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде, рдиреЗрдХреНрд╕реНрдЯ рдиреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде, LEFT JOINs рдФрд░ RIGHT JOINs рдХреЗ рдЭреБрдВрдб рдХреЗ рд╕рд╛рдеред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдХреЗ, рдпрд╣ рднреНрд░рдорд┐рдд рд╣реЛрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХреНрдпреЛрдВ / рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХрд▓ рд╡рд░реНрдЧ рдХреНрд╡реЗрд░реА рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг (рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ)SELECT IFNULL(SUM(t_step3.half_step3 - IFNULL(t_step1.bonus, 0) - IFNULL(t_step2.bonus, 0)), 0) AS 'bonus' FROM ( SELECT t_orders2cat.order_id AS 'id', (t_o.balance_rub - SUM(t_orders2cat.dprice_rub - t_orders2cat.delivery_cost_rub) - IFNULL(t_gurkin.half_step3, 0) - IFNULL(t_o2p.cost_expenses_rub, 0)) * ( IF(base_on_tender = 0, IFNULL(t_category_percent.percent, 1), IF(base_on_tender = 1, IFNULL(t_category_percent.percent, 1) - 0.1, IFNULL(t_category_percent.percent, 1) - 0.5) ) - IF(t_orders.tech_helper_id != 0, t_users.tech_bonus_percent, 0) ) / 100 AS 'half_step3' FROM t_orders2cat, t_orders LEFT JOIN t_category_percent ON t_orders.category_percent_id = t_category_percent.id LEFT JOIN t_users ON t_orders.tech_helper_id = t_users.id LEFT JOIN (SELECT order_id, SUM(cost_expenses_rub) AS 'cost_expenses_rub' FROM t_orders2pnr GROUP BY t_orders2pnr.order_id HAVING SUM(cost_expenses_rub) > 0) AS t_o2p ON t_orders.id = t_o2p.order_id LEFT JOIN ( SELECT t_orders.id AS 'order_id', SUM(deg_discount(deg_convert_money( t_orders.rate_eur, t_orders.rate_usd, t_orders.rate_jpy, t_orders2cat.price, t_orders2cat.currency_id, t_orders.currency_id), t_orders2cat.discount) * t_orders2cat.count - t_orders2cat.dprice_rub - t_orders2cat.delivery_cost_rub - IFNULL(t_orders2pnr.cost_expenses_rub, 0) ) * t_p.balance_rub / t_orders.balance AS 'half_step3' FROM t_orders LEFT JOIN t_orders2pnr ON t_orders.id = t_orders2pnr.order_id, t_orders2cat, t_cat, t_vendors, ( SELECT order_id, SUM(summa_rub) AS 'balance_rub' FROM t_payments GROUP BY order_id ) AS t_p, ( SELECT t_o.id, GREATEST(IFNULL(t_o.date_shipment, t_o.date_pnr_finish), IFNULL(t_o.date_pnr_finish, t_o.date_shipment), MAX(t_payments.date_payment)) AS 'date_closed', SUM(t_payments.summa_rub) AS 'balance_rub' FROM t_payments, ( SELECT t_orders.id, COUNT(t_orders2cat.id) AS 'orders2cat_count', MAX(t_orders2cat.date_from) AS 'date_shipment', MAX(t_orders2cat.status_id) AS 'orders2cat_status', COUNT(t_orders2pnr.id) AS 'pnr_count', MAX(t_orders2pnr.date) AS 'date_pnr_finish', MAX(t_orders2pnr.status_id) AS 'pnr_status' FROM t_orders LEFT JOIN t_orders2cat ON t_orders.id = t_orders2cat.order_id LEFT JOIN t_orders2pnr ON t_orders.id = t_orders2pnr.order_id WHERE t_orders.user_id = in_user_id AND t_orders.items_finished >= t_orders.items_count AND t_orders.summa - t_orders.balance < 2 GROUP BY t_orders.id ) AS t_o WHERE t_payments.order_id = t_o.id GROUP BY t_payments.order_id HAVING EXTRACT(YEAR_MONTH FROM date_closed) = EXTRACT(YEAR_MONTH FROM in_date) ) AS t_o WHERE t_orders.id = t_o.id AND t_orders.id = t_p.order_id AND t_orders.id = t_orders2cat.order_id AND t_orders2cat.cat_id = t_cat.id AND t_orders.user_id = in_user_id AND t_cat.vendor_id = t_vendors.id AND t_vendors.user_id = 158 GROUP BY t_orders.id ) AS t_gurkin ON t_orders.id = t_gurkin.order_id, ( SELECT t_o.id, GREATEST(IFNULL(t_o.date_shipment, t_o.date_pnr_finish), IFNULL(t_o.date_pnr_finish, t_o.date_shipment), MAX(t_payments.date_payment)) AS 'date_closed', SUM(t_payments.summa_rub) AS 'balance_rub' FROM t_payments, ( SELECT t_orders.id, COUNT(t_orders2cat.id) AS 'orders2cat_count', MAX(t_orders2cat.date_from) AS 'date_shipment', MAX(t_orders2cat.status_id) AS 'orders2cat_status', COUNT(t_orders2pnr.id) AS 'pnr_count', MAX(t_orders2pnr.date) AS 'date_pnr_finish', MAX(t_orders2pnr.status_id) AS 'pnr_status' FROM t_orders LEFT JOIN t_orders2cat ON t_orders.id = t_orders2cat.order_id LEFT JOIN t_orders2pnr ON t_orders.id = t_orders2pnr.order_id WHERE t_orders.user_id = in_user_id AND t_orders.items_finished >= t_orders.items_count AND t_orders.summa - t_orders.balance < 2 GROUP BY t_orders.id ) AS t_o WHERE t_payments.order_id = t_o.id GROUP BY t_payments.order_id HAVING EXTRACT(YEAR_MONTH FROM date_closed) = EXTRACT(YEAR_MONTH FROM in_date) ) AS t_o WHERE t_orders2cat.order_id = t_o.id AND t_orders2cat.order_id = t_orders.id GROUP BY t_orders2cat.order_id ) AS t_step3 LEFT JOIN ( SELECT t_orders.id, t_o.average_curs * (t_orders.summa - IFNULL(t_gurkin.step1, 0)) * ( IF(base_on_tender = 0, IFNULL(t_category_percent.percent, 1), IF(base_on_tender = 1, IFNULL(t_category_percent.percent, 1) - 0.1, IFNULL(t_category_percent.percent, 1) - 0.5 ) ) - IF(t_orders.tech_helper_id != 0, t_users.tech_bonus_percent, 0) ) / 100 * 0.3 AS 'bonus' FROM t_orders LEFT JOIN t_category_percent ON t_orders.category_percent_id = t_category_percent.id LEFT JOIN t_users ON t_orders.tech_helper_id = t_users.id LEFT JOIN ( SELECT t_orders.id AS 'order_id', SUM(deg_discount(deg_convert_money( t_orders.rate_eur, t_orders.rate_usd, t_orders.rate_jpy, t_orders2cat.price, t_orders2cat.currency_id, t_orders.currency_id), t_orders2cat.discount) * t_orders2cat.count) * t_o.payment_rub / t_o.payment_currency AS 'step1' FROM t_orders, t_orders2cat, t_cat, t_vendors, ( SELECT t_orders.id, SUM(t_payments.summa_rub) AS 'payment_rub', SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_payments.summa_rub, 1, t_orders.currency_id)) AS 'payment_currency', t_orders.summa FROM t_orders, t_payments, t_rates WHERE t_orders.id = t_payments.order_id AND t_payments.date_rates = t_rates.date AND EXTRACT(YEAR_MONTH FROM t_orders.date_firstpay) = EXTRACT(YEAR_MONTH FROM t_payments.date_payment) GROUP BY t_payments.order_id HAVING payment_currency / t_orders.summa >= 0.3 ) AS t_o WHERE t_orders.id = t_orders2cat.order_id AND t_orders2cat.order_id = t_o.id AND t_orders.user_id = in_user_id AND t_orders2cat.cat_id = t_cat.id AND t_vendors.user_id = 158 AND t_cat.vendor_id = t_vendors.id GROUP BY t_o.id ) AS t_gurkin ON t_orders.id = t_gurkin.order_id, ( SELECT t_orders.id, SUM(t_payments.summa_rub) / SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_payments.summa_rub, 1, t_orders.currency_id)) AS 'average_curs' FROM t_payments, t_rates, t_orders, ( SELECT t_payments.order_id, MIN(t_payments.date_payment) AS 'date_payment' FROM t_payments WHERE 0.3 <= ( SELECT SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_p.summa_rub, 1, t_o.currency_id)) / t_o.summa AS 'summa_cur' FROM t_payments AS t_p, t_orders AS t_o, t_rates WHERE t_p.order_id = t_o.id AND t_p.date_rates = t_rates.date AND t_p.date_payment <= t_payments.date_payment AND t_o.id = t_payments.order_id ) GROUP BY t_payments.order_id ) AS t_o WHERE t_payments.order_id = t_o.order_id AND t_payments.order_id = t_orders.id AND t_payments.date_rates = t_rates.date AND EXTRACT(YEAR_MONTH FROM t_payments.date_payment) <= EXTRACT(YEAR_MONTH FROM t_o.date_payment) AND t_orders.user_id = in_user_id GROUP BY t_orders.id ) AS t_o WHERE t_orders.id = t_o.id AND t_orders.user_id = in_user_id ) AS t_step1 ON t_step3.id = t_step1.id LEFT JOIN ( SELECT t_orders.id, SUM(t_payments.summa_rub) / SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_payments.summa_rub, 1, t_orders.currency_id)) * (t_orders.summa - IFNULL(t_gurkin.step2, 0)) * ( IF(base_on_tender = 0, IFNULL(t_category_percent.percent, 1), IF(base_on_tender = 1, IFNULL(t_category_percent.percent, 1) - 0.1, IFNULL(t_category_percent.percent, 1) - 0.5 ) ) - IF(t_orders.tech_helper_id != 0, t_users.tech_bonus_percent, 0) ) / 100 * 0.3 AS 'bonus' FROM t_payments, t_rates, t_orders LEFT JOIN t_category_percent ON t_orders.category_percent_id = t_category_percent.id LEFT JOIN t_users ON t_orders.tech_helper_id = t_users.id LEFT JOIN ( SELECT t_orders.id AS 'order_id', SUM(deg_discount(deg_convert_money( t_orders.rate_eur, t_orders.rate_usd, t_orders.rate_jpy, t_orders2cat.price, t_orders2cat.currency_id, t_orders.currency_id), t_orders2cat.discount) * t_orders2cat.count) * t_o.payment_rub / t_o.payment_currency AS 'step2' FROM t_orders, t_orders2cat, t_cat, t_vendors, ( SELECT t_orders.id, SUM(t_payments.summa_rub) AS 'payment_rub', SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_payments.summa_rub, 1, t_orders.currency_id)) AS 'payment_currency' FROM t_payments, t_rates, t_orders, ( SELECT t_o.id, GREATEST(date_exit, date_payment) AS 'date_payment_bonus' FROM ( SELECT t_o.id AS 'id', MAX(t_containers.date_port_exit) AS 'date_exit' FROM t_orders2cat, t_invoices2orders2cat, t_containers2invoices, t_containers, ( SELECT t_orders.id FROM t_orders, t_orders2cat WHERE t_orders.id = t_orders2cat.order_id AND t_orders.user_id = in_user_id AND 4 <= ALL (SELECT t_o2c.status_id FROM t_orders2cat AS t_o2c WHERE t_o2c.order_id = t_orders.id) GROUP BY t_orders.id ) AS t_o WHERE t_orders2cat.id = t_invoices2orders2cat.order2cat_id AND t_invoices2orders2cat.invoice_id = t_containers2invoices.invoice_id AND t_containers2invoices.container_id = t_containers.id AND t_orders2cat.order_id = t_o.id GROUP BY t_o.id ) AS t_o, ( SELECT t_payments.order_id, MIN(t_payments.date_payment) AS 'date_payment' FROM t_payments WHERE 0.8 <= ( SELECT SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_p.summa_rub, 1, t_o.currency_id)) / t_o.summa AS 'summa_cur' FROM t_payments AS t_p, t_orders AS t_o, t_rates WHERE t_p.order_id = t_o.id AND t_o.user_id = in_user_id AND t_p.date_rates = t_rates.date AND t_p.date_payment <= t_payments.date_payment AND t_o.id = t_payments.order_id ) GROUP BY t_payments.order_id ) t_p WHERE t_o.id = t_p.order_id ) AS t_o WHERE t_payments.order_id = t_o.id AND t_payments.date_rates = t_rates.date AND t_payments.order_id = t_orders.id AND EXTRACT(YEAR_MONTH FROM t_payments.date_payment) <= EXTRACT(YEAR_MONTH FROM t_o.date_payment_bonus) GROUP BY t_orders.id ) AS t_o WHERE t_orders.id = t_orders2cat.order_id AND t_orders2cat.order_id = t_o.id AND t_orders2cat.cat_id = t_cat.id AND t_orders.user_id = in_user_id AND t_vendors.user_id = 158 AND t_cat.vendor_id = t_vendors.id GROUP BY t_o.id ) AS t_gurkin ON t_orders.id = t_gurkin.order_id, ( SELECT t_o.id, GREATEST(date_exit, date_payment) AS 'date_payment_bonus' FROM ( SELECT t_o.id AS 'id', MAX(t_containers.date_port_exit) AS 'date_exit' FROM t_orders2cat, t_invoices2orders2cat, t_containers2invoices, t_containers, ( SELECT t_orders.id FROM t_orders, t_orders2cat WHERE t_orders.id = t_orders2cat.order_id AND t_orders.user_id = in_user_id AND 4 <= ALL (SELECT t_o2c.status_id FROM t_orders2cat AS t_o2c WHERE t_o2c.order_id = t_orders.id) AND t_orders.user_id = in_user_id GROUP BY t_orders.id ) AS t_o WHERE t_orders2cat.id = t_invoices2orders2cat.order2cat_id AND t_invoices2orders2cat.invoice_id = t_containers2invoices.invoice_id AND t_containers2invoices.container_id = t_containers.id AND t_orders2cat.order_id = t_o.id GROUP BY t_o.id ) AS t_o, ( SELECT t_payments.order_id, MIN(t_payments.date_payment) AS 'date_payment' FROM t_payments WHERE 0.8 <= ( SELECT SUM(deg_convert_money(t_rates.eur, t_rates.usd, t_rates.jpy, t_p.summa_rub, 1, t_o.currency_id)) / t_o.summa AS 'summa_cur' FROM t_payments AS t_p, t_orders AS t_o, t_rates WHERE t_p.order_id = t_o.id AND t_o.user_id = in_user_id AND t_p.date_rates = t_rates.date AND t_p.date_payment <= t_payments.date_payment AND t_o.id = t_payments.order_id ) GROUP BY t_payments.order_id ) t_p WHERE t_o.id = t_p.order_id ) AS t_o WHERE t_o.id = t_payments.order_id AND t_orders.id = t_o.id AND t_orders.user_id = in_user_id AND t_payments.date_rates = t_rates.date AND EXTRACT(YEAR_MONTH FROM t_payments.date_payment) <= EXTRACT(YEAR_MONTH FROM t_o.date_payment_bonus) GROUP BY t_orders.id ) AS t_step2 ON t_step3.id = t_step2.id;
рд╕реА # рдореЗрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХреНрд╢рди рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐
рдпреЗрдВрдЬрд╝рд▓рд╛рдЯреЛрд╡ рдиреЗ рд╣рдореЗрдВ рдХреНрдпрд╛ рдкреЗрд╢рдХрд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдерд╛: рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрдлрд░ рдХреЛ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдмрдлрд╝рд░реНрд╕ рдХреЛ рддреНрд╡рд░рд┐рдд рдкрд╣реБрдВрдЪ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛, рдПрдХ рдмрдЧ ...
рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╛рдЗрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред
- рдЪреВрдВрдХрд┐ рдореИрдВ рдПрдХ рд▓реИрдкрдЯреЙрдк (Win7x64), рдПрдХ рдШрд░реЗрд▓реВ рдХрдВрдкреНрдпреВрдЯрд░ (Win8.1x64) рдФрд░ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдХрдВрдкреНрдпреВрдЯрд░ (Win8x64) рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд .Net рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг 4 рдХреЗ рд╕рд╛рде рддреАрди рдЕрдХреНрд╖реЛрдВ рд╡рд┐рдВрдбреЛрдЬ 7x64, 8x64, 8.1x64 рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред ред
- рдУрдПрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪреБрдкрдЪрд╛рдк рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░рддреЗ рд╕рдордп, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реЗрд╡ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
- рдкрд╛рда рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ctrl + v рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдиреВ рдЖрдЗрдЯрдо рджрдмрд╛рдХрд░), рдмрдлрд░ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдЕрдВрддрд┐рдо рдкрд╛рда рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- рдЬрдм рдЖрдк ctrl + alt + v рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдлрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдПрдХ рд░рд┐рдмреВрдЯ рдХреЗ рдмрд╛рдж рднреА рдмрдлрд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- рд╣реЙрдЯрдХреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдЪреВрдВрдХрд┐ рд╕рд╣реЗрдЬреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЦреЛрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдХреЛрдб

рдЖрдк
рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред Exe рдлрд╝рд╛рдЗрд▓ рдХреЛ
рдпрд╣рд╛рдБ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдореИрдВ рдкреВрд░реЗ рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
рд▓реЙрдиреНрдЪ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:
static void Main() { bool createdNew; Mutex mutex = new Mutex(true, "MY_UNIQUE_MUTEX_ClipboardToClipboard", out createdNew); if (!createdNew) { MessageBox.Show(" ", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); Process.GetCurrentProcess().Kill(); } ... ... ... mutex.ReleaseMutex(); }
Ctrl + alt + v рджрдмрд╛рдиреЗ рдХреЗ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛
public static EventCtrlAltVHandler EventPressCtrlAltV; private static Keys lastKey = Keys.FinalMode; private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if ((nCode >= 0) && (wParam == (IntPtr)WM_KEYDOWN)) { Keys key = (Keys)Marshal.ReadInt32(lParam); if (lastKey == Keys.LMenu && key == Keys.V) EventPressCtrlAltV(); lastKey = key; } return CallNextHookEx(_hookID, nCode, wParam, lParam); }
MainForm.cs рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ ctrl + {
key } рджрдмрд╛рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реВрдЪреА рд╕реЗ рдЪрдпрдирд┐рдд рдПрдХ рддрддреНрд╡ рдкрд░ ctrl + v рдерд╛
private static void SendCtrlhotKey(char key) { keybd_event(VK_CONTROL, 0, 0, 0); keybd_event((byte)key, 0, 0, 0); keybd_event((byte)key, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); }
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд╣рд╛рдБ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдЗрддрд┐рд╣рд╛рд╕ рдПрдХ рдПрдХреНрд╕рдПрдордПрд▓-рдлрд╝рд╛рдЗрд▓, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕реАрдзреЗ рдЖрд╡реЗрджрди рдЧреБрдгреЛрдВ рдореЗрдВ ... рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореИрдВ рдЙрдирдХрд╛ рдЙрддреНрддрд░ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред
рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рд╕рдм рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╣рдо exe-shnik рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред рдкрд╛рда рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЪреБрдиреЗрдВ, ctrl + c рджрдмрд╛рдПрдБ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЯреНрд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмреЗрдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╕реНрдЯреЗрдкрд░ рд╕реБрд╡рд┐рдзрд╛ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ - рдпрджрд┐ рдЖрдк рдЯреВрд▓рдЯрд┐рдк рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╡рд┐рдВрдбреЛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЦреБрд▓рддреА рд╣реИ:

рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдореИрдВ рдмрд╛рдж рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдЕрдм рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдкрд╛рда рдХреЛ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐ FIG рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ - ctrl + alt + v рджрдмрд╛рдПрдВ:

рд╣рдо рддреБрд░рдВрдд рд╕реВрдЪреА рдХреЛ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЙрд╕ рдкрд╛рда рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЬрдм рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЯреВрд▓рдЯрд┐рдк рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рда рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╣реЛрдиреЗ рдкрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдЬреЛ рдЖрдк рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ:

рд╕рд╣рдордд, рд╣рд┐рдВрджреВ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реБрд╡рд┐рдзрд╛)
рддреЛ, рдЖрдкрдиреЗ рдЙрд╕ рддрддреНрд╡ рдХреЛ рдЪреБрдирд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рдмрд╕ Enter рджрдмрд╛рдПрдВ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЖрдкрдХреЗ рд╕рдВрдкрд╛рджрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдХрд░реНрд╕рд░ рддреИрдирд╛рдд рд╣реИред
рдЗрд╕ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдк рдбреЗрд▓ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рддреЛ рдЪрдпрдирд┐рдд рдЯреБрдХрдбрд╝рд╛ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкреВрд░реЗ рдмрдлрд░ рдмрдлрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЖрдк рд╕рдВрдпреЛрдЬрди ctrl + R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдкрд░ рдЯрд┐рдкреНрдкрдгреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рднрд╛рдЧрдиреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдЦрд┐рдбрд╝рдХреА рдЯреНрд░реЗ рдореЗрдВ рдЫрд┐рдк рдЬрд╛рддреА рд╣реИред
рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рдПрдХ рдЦреЛрдЬ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдмрдлрд╝рд░реНрд╕ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: ctrl + alt + v -> ctrl + fред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЦреЛрдЬ рдмрд╛рд░ рдореЗрдВ рдлрд╝реЛрдХрд╕ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреБрдЫ рдкреНрд░рдореБрдЦ рдЕрдХреНрд╖рд░ рджрд░реНрдЬ рдХрд░реЗрдВ, Enter рджрдмрд╛рдПрдВ -> рдЕрдм рдзреНрдпрд╛рди рд╕реВрдЪреА рдкрд░ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдлрд┐рд░ рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЦреЛрдЬ рдмрд╛рд░ рдореЗрдВ рдлрд╝реЛрдХрд╕ рд╣реИ рдФрд░ рдкрд╛рда рд╣реИ, рддреЛ рдЬрдм рдЖрдк рдмрдЪ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рда рдлрд╝реАрд▓реНрдб рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рднрд╛рдЧрдиреЗ рдХрд╛ рджрдмрд╛рд╡ рдлрд┐рд░ рд╕реЗ рдЦрд┐рдбрд╝рдХреА рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВред рдХрд┐рд╕реА рддрд░рд╣ рдореБрдЭреЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕реНрддрд░ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрд╕рдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдиреЗ 100% рдЫреЛрдбрд╝ рджрд┐рдпрд╛:

рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдЯреВрд▓ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдореЗрд░реА рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд┐рдирд╛, рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдореЗрдВ рдирдордХ / рдХрд╛рд▓реА рдорд┐рд░реНрдЪ, рдмрд┐рд▓реНрд▓реА рдХреЗ рдмрдЪреНрдЪреЗ рдЖрджрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкреЗрдЯреЗрдВрдЯ рдЯреНрд░реЛрд▓ рдирд╣реАрдВ рд╣реВрдВ)